DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_EVENT_PUB

Source


1 PACKAGE BODY PA_EVENT_PUB AS
2 /* $Header: PAEVAPBB.pls 120.14 2011/09/28 07:17:43 pstawar ship $ */
3 
4 /* Global Constants */
5 G_PKG_NAME		VARCHAR2(30) := 'PA_EVENT_PUB';
6 
7 --PACKAGE GLOBAL to be used during updates ---------------------------
8 G_USER_ID               CONSTANT NUMBER := FND_GLOBAL.USER_id;
9 G_LOGIN_ID              CONSTANT NUMBER := FND_GLOBAL.login_id;
10 
11 l_debug_mode VARCHAR2(1) := NVL(FND_PROFILE.value('PA_DEBUG.MODE'),'Y');
12 
13 /*==================================================================
14 --
15 --Name:               create_event
16 --Type:               procedure
17 --Description: This API creates an event or a set of events.
18 --
19 --Called subprograms: PA_EVENT_PVT.CHECK_MDTY_PARAMS1
20 --		      PA_EVENT_PVT.CHECK_MDTY_PARAMS2
21 --		      PA_EVENT_UTILS.CHECK_VALID_PROJECT
22 --		      PA_EVENT_PVT.CHECK_CREATE_EVENT_OK
23 --		      PA_EVENT_PVT.VALIDATE_FLEXFIELD
24 --		      PA_EVENTS_PKG.INSERT_ROW
25 --History:
26 
27 -- ============================================================================*/
28 
29 PROCEDURE create_event
30     ( p_api_version_number   IN      NUMBER
31      ,p_commit               IN      VARCHAR2
32      ,p_init_msg_list        IN      VARCHAR2
33      ,p_pm_product_code      IN      VARCHAR2
34      ,p_event_in_tbl	     IN      Event_In_Tbl_Type
35      ,p_event_out_tbl	     OUT     NOCOPY Event_Out_Tbl_Type  --File.Sql.39 bug 4440895
36      ,p_msg_count            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
37      ,p_msg_data             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
38      ,p_return_status        OUT     NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
39 IS
40 
41 
42 rowid				varchar2(18);
43 l_event_type_classification	pa_event_types.event_type_classification%type;
44 P_project_id			pa_events.project_id%type;
45 P_task_id			pa_events.task_id%type;
46 P_Organization_Id		pa_projects_all.org_id%type;
47 p_inv_org_id                    pa_events.inventory_item_id%type;
48 p_agreement_id                  pa_events.agreement_id%type;   -- Federal Uptake
49 
50 p_event_in_rec 			Event_Rec_In_Type;
51 p_event_out_rec			Event_Rec_Out_Type;
52 tot_in_rec			NUMBER:=0;
53 tot_out_rec                     NUMBER:=0;
54 p_api_name			VARCHAR2(100):='CREATE_EVENT';
55 p_return_msg                    VARCHAR2(2000);
56 p_validate_status               VARCHAR2(1):='Y';
57 
58 /* Declaring varible for MCB2 */
59 l_multi_currency_billing_flag     pa_projects_all.multi_currency_billing_flag%type;
60 l_baseline_funding_flag           pa_projects_all.BASELINE_FUNDING_FLAG%TYPE;
61 l_revproc_currency_code           pa_projects_all.revproc_currency_code%TYPE;
62 l_revproc_rate_type               pa_events.revproc_rate_type%TYPE;
63 l_revproc_rate_date               pa_events.revproc_rate_date%TYPE;
64 l_revproc_exchange_rate           pa_events.revproc_exchange_rate%TYPE;
65 l_invproc_currency_code           pa_events.invproc_currency_code%TYPE;
66 l_invproc_currency_type           pa_projects_all.invproc_currency_type%TYPE;
67 l_invproc_rate_type               pa_events.invproc_rate_type%TYPE;
68 l_invproc_rate_date               pa_events.invproc_rate_date%TYPE;
69 l_invproc_exchange_rate           pa_events.invproc_exchange_rate%TYPE;
70 l_project_currency_code           pa_projects_all.project_currency_code%TYPE;
71 l_project_bil_rate_date_code      pa_projects_all.project_bil_rate_date_code%TYPE;
72 l_project_bil_rate_type           pa_projects_all.project_bil_rate_type%TYPE;
73 l_project_bil_rate_date           pa_projects_all.project_bil_rate_date%TYPE;
74 l_project_bil_exchange_rate       pa_projects_all.project_bil_exchange_rate%TYPE;
75 l_projfunc_currency_code          pa_projects_all.projfunc_currency_code%TYPE;
76 l_projfunc_bil_rate_date_code     pa_projects_all.projfunc_bil_rate_date_code%TYPE;
77 l_projfunc_bil_rate_type          pa_projects_all.projfunc_bil_rate_type%TYPE;
78 l_projfunc_bil_rate_date          pa_projects_all.projfunc_bil_rate_date%TYPE;
79 l_projfunc_bil_exchange_rate      pa_projects_all.projfunc_bil_exchange_rate%TYPE;
80 l_funding_rate_date_code          pa_projects_all.funding_rate_date_code%TYPE;
81 l_funding_rate_type               pa_projects_all.funding_rate_type%TYPE;
82 l_funding_rate_date               pa_projects_all.funding_rate_date%TYPE;
83 l_funding_exchange_rate           pa_projects_all.funding_exchange_rate%TYPE;
84 
85 l_event_number			  pa_events.event_num%type;
86 l_encoded                         varchar2(1):='F';
87 l_return_status 		  varchar2(1):= FND_API.G_RET_STS_SUCCESS;
88 BEGIN
89   -- Initialize the Error Stack
90   pa_debug.set_err_stack('PA_EVENT_PUB.CREATE_EVENT');
91 
92   --Log Message
93   IF l_debug_mode = 'Y' THEN
94   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CREATE_EVENT.begin'
95                      ,x_msg         => 'Beginning of Create Event'
96                      ,x_log_level   => 5);
97    END IF;
98 
99       p_msg_count := 0;
100       p_return_status := FND_API.G_RET_STS_SUCCESS;
101 
102   --Log Message
103   IF l_debug_mode = 'Y' THEN
104   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CREATE_EVENT.begin'
105                      ,x_msg         => 'Calling  mandatory input parameters-1'
106                      ,x_log_level   => 5);
107    END IF;
108 
109  ---Validating mandatory input parameters-
110 
111 
112    PA_EVENT_PVT.CHECK_MDTY_PARAMS1
113     ( p_api_version_number             =>p_api_version_number
114      ,p_api_name                       =>p_api_name
115      ,p_pm_product_code                =>p_pm_product_code
116      ,p_function_name                  =>'PA_EV_CREATE_EVENT'
117      ,x_return_status                  =>p_return_status
118      ,x_msg_count                      =>p_msg_count
119      ,x_msg_data                       =>p_msg_data );
120 
121 
122    If p_return_status <> FND_API.G_RET_STS_SUCCESS
123    Then
124 
125         IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR
126         THEN
127 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
128 
129         ELSIF p_return_status = FND_API.G_RET_STS_ERROR
130         THEN
131                         RAISE FND_API.G_EXC_ERROR;
132         END IF;
133    End If;
134    tot_in_rec := p_event_in_tbl.first;
135    while tot_in_rec is not null loop   -- loop begins
136 --  For all the date variables using TRUNC instead of ltrim(rtrim) for bug 3053669
137 P_event_in_rec.P_pm_event_reference             :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_pm_event_reference));
138 P_event_in_rec.P_task_number                    :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_task_number));
139 P_event_in_rec.P_event_number                   :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_event_number));
140 P_event_in_rec.P_event_type                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_event_type));
141 -- Added the below three line for federal Uptake
142 P_event_in_rec.P_agreement_number               :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_agreement_number));
143 P_event_in_rec.P_agreement_type                 :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_agreement_type));
144 P_event_in_rec.P_customer_number                :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_customer_number));
145 -- Bug 8410898 skkoppul
146 IF (p_event_in_tbl(tot_in_rec).P_description = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
147     P_event_in_rec.P_description                :=NULL;
148 ELSE
149     P_event_in_rec.P_description                :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_description));
150 END IF;
151 P_event_in_rec.P_bill_hold_flag                 :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_bill_hold_flag));
152 P_event_in_rec.P_completion_date                :=trunc(p_event_in_tbl(tot_in_rec).P_completion_date);
153 P_event_in_rec.P_desc_flex_name                 :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_desc_flex_name));
154 P_event_in_rec.P_attribute_category             :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute_category));
155 P_event_in_rec.P_attribute1                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute1));
156 P_event_in_rec.P_attribute2                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute2));
157 P_event_in_rec.P_attribute3                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute3));
158 P_event_in_rec.P_attribute4                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute4));
159 P_event_in_rec.P_attribute5                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute5));
160 P_event_in_rec.P_attribute6                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute6));
161 P_event_in_rec.P_attribute7                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute7));
162 P_event_in_rec.P_attribute8                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute8));
163 P_event_in_rec.P_attribute9                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute9));
164 P_event_in_rec.P_attribute10                    :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute10));
165 P_event_in_rec.P_project_number                 :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_project_number));
166 P_event_in_rec.P_organization_name              :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_organization_name));
167 P_event_in_rec.P_inventory_org_name             :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_inventory_org_name));
168 P_event_in_rec.P_inventory_item_id              :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_inventory_item_id));
169 P_event_in_rec.P_quantity_billed                :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_quantity_billed));
170 P_event_in_rec.P_uom_code                       :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_uom_code));
171 P_event_in_rec.P_unit_price                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_unit_price));
172 P_event_in_rec.P_reference1                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference1));
173 P_event_in_rec.P_reference2                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference2));
174 P_event_in_rec.P_reference3                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference3));
175 P_event_in_rec.P_reference4                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference4));
176 P_event_in_rec.P_reference5                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference5));
177 P_event_in_rec.P_reference6                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference6));
178 P_event_in_rec.P_reference7                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference7));
179 P_event_in_rec.P_reference8                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference8));
180 P_event_in_rec.P_reference9                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference9));
181 P_event_in_rec.P_reference10                    :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference10));
182 P_event_in_rec.P_bill_trans_currency_code       :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_bill_trans_currency_code));
183 P_event_in_rec.P_bill_trans_bill_amount         :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_bill_trans_bill_amount));
184 P_event_in_rec.P_bill_trans_rev_amount          :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_bill_trans_rev_amount));
185 -- Bug 8410898 skkoppul
186 IF (p_event_in_tbl(tot_in_rec).P_project_rate_type = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
187    P_event_in_rec.P_project_rate_type           :=NULL;
188 ELSE
189    P_event_in_rec.P_project_rate_type           :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_project_rate_type));
190 END IF;
191 P_event_in_rec.P_project_rate_date              :=trunc(p_event_in_tbl(tot_in_rec).P_project_rate_date);
192 P_event_in_rec.P_project_exchange_rate          :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_project_exchange_rate));
193 -- Bug 8410898 skkoppul
194 IF (p_event_in_tbl(tot_in_rec).P_projfunc_rate_type = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
195    P_event_in_rec.P_projfunc_rate_type          := NULL;
196 ELSE
197    P_event_in_rec.P_projfunc_rate_type          :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_projfunc_rate_type));
198 END IF;
199 P_event_in_rec.P_projfunc_rate_date             :=trunc(p_event_in_tbl(tot_in_rec).P_projfunc_rate_date);
200 P_event_in_rec.P_projfunc_exchange_rate         :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_projfunc_exchange_rate));
201 -- Bug 8410898 skkoppul
202 IF (p_event_in_tbl(tot_in_rec).P_funding_rate_type = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
203     P_event_in_rec.P_funding_rate_type          := NULL;
204 ELSE
205     P_event_in_rec.P_funding_rate_type          :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_funding_rate_type));
206 END IF;
207 P_event_in_rec.P_funding_rate_date              :=trunc(p_event_in_tbl(tot_in_rec).P_funding_rate_date);
208 P_event_in_rec.P_funding_exchange_rate          :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_funding_exchange_rate));
209 P_event_in_rec.P_adjusting_revenue_flag         :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_adjusting_revenue_flag));
210 P_event_in_rec.P_event_id                       :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_event_id));
211 P_event_in_rec.P_deliverable_id                 :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_deliverable_id));
212 P_event_in_rec.P_action_id                      :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_action_id));
213 P_event_in_rec.P_context                        :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_context));
214 
215 
216    BEGIN	--Start of Inner Block
217 	   --Seting savepoint
218 	     savepoint create_event;
219 
220 	  --Log Message
221 	  IF l_debug_mode = 'Y' THEN
222 	  pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CREATE_EVENT.begin'
223 			     ,x_msg         => ' Calling mandatory input parameters-2'
224 			     ,x_log_level   => 5);
225 	  END IF;
226 
227 	-- Validating mandatory input parameters-2
228 
229 	     PA_EVENT_PVT.CHECK_MDTY_PARAMS2
230 	     (p_pm_event_reference    => p_event_in_rec.p_pm_event_reference
231 	     ,p_pm_product_code       => p_pm_product_code
232 	     ,p_project_number        => p_event_in_rec.p_project_number
233 	     ,p_event_type            => p_event_in_rec.p_event_type
234 	     ,p_organization_name     => p_event_in_rec.p_organization_name
235 	     ,p_calling_place         => 'CREATE_EVENT'
236 	     ,x_return_status         => p_return_status );
237 
238 	     If p_return_status <> FND_API.G_RET_STS_SUCCESS
239 	     Then
240 		IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR
241 		THEN
242 				RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
243 
244 		ELSIF p_return_status = FND_API.G_RET_STS_ERROR
245 		THEN
246 				RAISE FND_API.G_EXC_ERROR;
247 		END IF;
248 	     End If;
249 
250           --Log Message
251           IF l_debug_mode = 'Y' THEN
252           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CREATE_EVENT.begin'
253                              ,x_msg         => 'Calling check_valid_project '
254 			     ,x_log_level   => 5);
255           END IF;
256 
257 	--validating the project number and derive the project_id.
258 	  If PA_EVENT_UTILS.CHECK_VALID_PROJECT
259 		(P_project_id   =>P_project_id
260 		,P_project_num  =>P_event_in_rec.P_project_number) = 'N'
261 	  Then
262 		IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
263 		THEN
264 			pa_interface_utils_pub.map_new_amg_msg
265 				( p_old_message_code => 'PA_INVALID_PROJECT'
266 				,p_msg_attribute    => 'CHANGE'
267 				,p_resize_flag      => 'N'
268 				,p_msg_context      => 'EVENT'
269 				,p_attribute1       => P_event_in_rec.p_pm_event_reference
270 				,p_attribute2       => ''
271 				,p_attribute3       => ''
272 				,p_attribute4       => ''
273 				,p_attribute5       => '');
274 		 END IF;
275 		 p_return_status := FND_API.G_RET_STS_ERROR;
276 	--If project_id is invalid then terminate further validation by raising error.
277 		 RAISE FND_API.G_EXC_ERROR;
278 	  End If;
279 
280           --Log Message
281           IF l_debug_mode = 'Y' THEN
282           pa_debug.write_log (x_module      =>'pa.plsql.PA_EVENT_PUB.CREATE_EVENT.begin'
283                              ,x_msg         =>'Calling get_project_defaults to get defaulting currencies'
284 			     ,x_log_level   =>5);
285           END IF;
286 
287 	-- Before the check_create_event_ok function is called the mcb related
288 	-- fields are defaulted
289 	-- Defaulting currency fields for the given project_id.
290 
291 	      PA_MULTI_CURRENCY_BILLING.get_project_defaults (
292 		    p_project_id                  =>  P_project_id,
293 		    x_multi_currency_billing_flag =>  l_multi_currency_billing_flag,
294 		    x_baseline_funding_flag       =>  l_baseline_funding_flag,
295 		    x_revproc_currency_code       =>  l_revproc_currency_code,
296 		    x_invproc_currency_type       =>  l_invproc_currency_type,
297 		    x_invproc_currency_code       =>  l_invproc_currency_code,
298 		    x_project_currency_code       =>  l_project_currency_code,
299 		    x_project_bil_rate_date_code  =>  l_project_bil_rate_date_code,
300 		    x_project_bil_rate_type       =>  l_project_bil_rate_type,
301 		    x_project_bil_rate_date       =>  l_project_bil_rate_date,
302 		    x_project_bil_exchange_rate   =>  l_project_bil_exchange_rate,
303 		    x_projfunc_currency_code      =>  l_projfunc_currency_code,
304 		    x_projfunc_bil_rate_date_code =>  l_projfunc_bil_rate_date_code,
305 		    x_projfunc_bil_rate_type      =>  l_projfunc_bil_rate_type,
306 		    x_projfunc_bil_rate_date      =>  l_projfunc_bil_rate_date,
307 		    x_projfunc_bil_exchange_rate  =>  l_projfunc_bil_exchange_rate,
308 		    x_funding_rate_date_code      =>  l_funding_rate_date_code,
309 		    x_funding_rate_type           =>  l_funding_rate_type,
310 		    x_funding_rate_date           =>  l_funding_rate_date,
311 		    x_funding_exchange_rate       =>  l_funding_exchange_rate,
312 		    x_return_status               =>  p_return_status,
313 		    x_msg_count                   =>  p_msg_count,
314 		    x_msg_data                    =>  p_msg_data);
315 
316              If p_return_status <> FND_API.G_RET_STS_SUCCESS
317              Then
318                 IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR
319                 THEN
320                                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
321 
322                 ELSIF p_return_status = FND_API.G_RET_STS_ERROR
323                 THEN
324                                 RAISE FND_API.G_EXC_ERROR;
325                 END IF;
326              End If;
327 
328 	--Log Message
329           IF l_debug_mode = 'Y' THEN
330           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CREATE_EVENT.begin'
331                              ,x_msg         => 'Calling check_create_event_ok'
332 			     ,x_log_level   => 5);
333           END IF;
334 
335 	-- Calls check_create_event_ok function
336 
337 	     If PA_EVENT_PVT.check_create_event_ok
338 		(P_pm_product_code 		=>p_pm_product_code
339 		,P_event_in_rec	        	=>p_event_in_rec
340 		,P_project_currency_code	=>l_project_currency_code
341 		,P_proj_func_currency_code	=>l_projfunc_currency_code
342 		,P_project_bil_rate_date_code	=>l_project_bil_rate_date_code
343 		,P_project_rate_type		=>l_project_bil_rate_type
344 		,p_project_bil_rate_date	=>l_project_bil_rate_date
345 		,p_projfunc_bil_rate_date_code  =>l_projfunc_bil_rate_date_code
346 		,P_projfunc_rate_type		=>l_projfunc_bil_rate_type
347 		,p_projfunc_bil_rate_date	=>l_projfunc_bil_rate_date
348 		,P_funding_rate_type		=>l_funding_rate_type
349 		,P_event_type_classification    =>l_event_type_classification
350 		,P_multi_currency_billing_flag	=>l_multi_currency_billing_flag
351 		,p_project_id			=>p_project_id
352                 ,p_projfunc_bil_exchange_rate   =>l_projfunc_bil_exchange_rate -- Added for bug 3009307
353                 ,p_funding_bil_rate_date_code  => l_funding_rate_date_code --Added for bug 3053190
354 		,x_task_id			=>p_task_id
355 		,x_organization_id		=>p_organization_id
356 		,x_inv_org_id			=>p_inv_org_id
357                 ,x_agreement_id                 =>p_agreement_id         -- Federal Uptake
358 		) = 'N'
359 	     Then
360         	p_return_status             := FND_API.G_RET_STS_ERROR;
361         	RAISE FND_API.G_EXC_ERROR;
362   	     End If;
363 
364           --Log Message
365           IF l_debug_mode = 'Y' THEN
366           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CREATE_EVENT.begin'
367                              ,x_msg         => 'Beginning Validate Flexfields'
368                      ,x_log_level   => 5);
369           END IF;
370 
371 
372 	--Validating Flexfields
373 	     IF (p_event_in_rec.p_desc_flex_name IS NOT NULL)
374 		 AND (p_event_in_rec.p_desc_flex_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
375 	     THEN
376 			PA_EVENT_PVT.VALIDATE_FLEXFIELD
377 			( p_desc_flex_name        => p_event_in_rec.p_desc_flex_name
378 			 ,p_attribute_category    => p_event_in_rec.p_attribute_category
379 			 ,p_attribute1            => p_event_in_rec.p_attribute1
380 			 ,p_attribute2            => p_event_in_rec.p_attribute2
381 			 ,p_attribute3            => p_event_in_rec.p_attribute3
382 			 ,p_attribute4            => p_event_in_rec.p_attribute4
383 			 ,p_attribute5            => p_event_in_rec.p_attribute5
384 			 ,p_attribute6            => p_event_in_rec.p_attribute6
385 			 ,p_attribute7            => p_event_in_rec.p_attribute7
386 			 ,p_attribute8            => p_event_in_rec.p_attribute8
387 			 ,p_attribute9            => p_event_in_rec.p_attribute9
388 			 ,p_attribute10           => p_event_in_rec.p_attribute10
389 			 ,p_return_msg            => p_return_msg
390 			 ,p_valid_status       => p_validate_status);
391 		   IF p_validate_status = 'N'
392 		   THEN
393 			   IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
394 			   THEN
395 				pa_interface_utils_pub.map_new_amg_msg
396 				( p_old_message_code => 'PA_INVALID_FF_VALUES'
397 				,p_msg_attribute    => 'CHANGE'
398 				,p_resize_flag      => 'N'
399 				,p_msg_context      => 'EVENT'
400 				,p_attribute1       => p_event_in_rec.p_pm_event_reference
401 				,p_attribute2       => ''
402 				,p_attribute3       => ''
403 				,p_attribute4       => ''
404 				,p_attribute5       => '');
405 			    END IF;
406 			    p_return_status             := FND_API.G_RET_STS_ERROR;
407 			    RAISE FND_API.G_EXC_ERROR;
408 		    END IF;
409 	       Else
410 			p_event_in_rec.P_desc_flex_name 	:=NULL;
411 			p_event_in_rec.P_attribute_category	:=NULL;
412 			p_event_in_rec.P_attribute1		:=NULL;
413 			p_event_in_rec.P_attribute2		:=NULL;
414 			p_event_in_rec.P_attribute3		:=NULL;
415 			p_event_in_rec.P_attribute4		:=NULL;
416 			p_event_in_rec.P_attribute5		:=NULL;
417 			p_event_in_rec.P_attribute6		:=NULL;
418 			p_event_in_rec.P_attribute7		:=NULL;
419 			p_event_in_rec.P_attribute8		:=NULL;
420 			p_event_in_rec.P_attribute9		:=NULL;
421 			p_event_in_rec.P_attribute10		:=NULL;
422 	       END IF;
423 
424 		--Log Message
425 		IF l_debug_mode = 'Y' THEN
426 		pa_debug.write_log (  x_module      => 'pa.plsql.PA_EVENT_PUB.CREATE_EVENT.begin'
427 				     ,x_msg         => 'Validating or generating event number'
428 				     ,x_log_level   => 5);
429 		END IF;
430 
431 		-- Validating the event num.If found NULL it is populated before
432 		-- inserting the record into pa_events.
433                   If (p_event_in_rec.P_event_number Is NULL
434                         OR p_event_in_rec.P_event_number = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
435 		    Then
436 			  --generating event number for project level events
437 			  If (P_task_id Is NULL)
438 			  Then
439 				SELECT NVL(max(event_num),0)+1
440 				INTO P_event_in_rec.p_event_number
441 				FROM pa_events e
442 				WHERE e.project_id = P_project_id
443 				AND e.task_id IS NULL;
444 			  Else
445 			  --generating event number for task level events
446 				SELECT NVL(max(event_num),0)+1
447 				INTO P_event_in_rec.p_event_number
448 				FROM pa_events e
449 				WHERE e.project_id =P_project_id
450 				AND e.task_id    = P_task_id;
451 			  End If;
452 		    End If;
453 
454 		--Validating the adjust revenue flag
455 		If upper(p_event_in_rec.P_adjusting_revenue_flag) = 'Y'
456 		Then
457 			p_event_in_rec.P_bill_trans_bill_amount := 0;
458 			p_event_in_rec.P_bill_hold_flag := 'N';
459                   p_event_in_rec.P_adjusting_revenue_flag :='Y';
460 		End If;
461 
462 		--If event type is of revenue type(Write-Off), set bill trans bill amt = 0.
463 
464 		If  l_event_type_classification In('WRITE OFF')
465 		Then
466 			p_event_in_rec.P_bill_trans_bill_amount:=0;
467 		End If;
468 
469 		--If event type is of invoice type, set bill trans rev amt = 0
470 
471 		If l_event_type_classification In('DEFERRED REVENUE','INVOICE REDUCTION','SCHEDULED PAYMENTS')
472 		Then
473 			p_event_in_rec.P_bill_trans_rev_amount:=0;
474 		End If;
475 
476 		--If event type = 'Write-On' bill trans bill amt = rev amt.
477 
478 		If (l_event_type_classification = 'WRITE ON')
479 		Then
480 			p_event_in_rec.P_bill_trans_bill_amount := p_event_in_rec.P_bill_trans_rev_amount;
481 		End If;
482 
483 		--If P_description is NULL then set default as event_type
484 
485 		If(p_event_in_rec.P_description Is NULL)
486 		Then
487 			p_event_in_rec.P_description:=p_event_in_rec.P_event_type;
488 		End If;
489 
490 		--Defaulting adjusting revenue flag
491 		If(p_event_in_rec.P_adjusting_revenue_flag = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
492 		Then
493                 p_event_in_rec.P_adjusting_revenue_flag :=NULL;
494 		End If;
495 
496 		--Defaulting bill hold flag
497 		If(p_event_in_rec.P_bill_hold_flag = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
498 		Then
499 			p_event_in_rec.P_bill_hold_flag :=NULL;
500 		End If;
501 
502 
503           --Log Message
504           IF l_debug_mode = 'Y' THEN
505           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CREATE_EVENT.begin'
506                              ,x_msg         => 'Beginning defaulting mcb parameters'
507 			     ,x_log_level   => 5);
508           END IF;
509 
510         --Before defaulting the mcb related paramaters validating
511         --if the User has overwritten any of the fields.
512 	If (l_multi_currency_billing_flag = 'Y')
513 	Then
514         /* Moved the following code here from a later point for code merge of bug 5458861 */
515        --Get the conversion_type for funding_rate_type, projfunc_rate_type and project_rate_type for bug3009239
516 
517            IF p_event_in_rec.p_funding_rate_type is not null
518               THEN
519                  SELECT conversion_type
520                    INTO l_funding_rate_type
521                    FROM pa_conversion_types_v
522                   WHERE user_conversion_type = p_event_in_rec.p_funding_rate_type
523                      or conversion_type = p_event_in_rec.p_funding_rate_type;
524                  p_event_in_rec.p_funding_rate_type := l_funding_rate_type;
525               END IF;
526 
527              IF p_event_in_rec.p_projfunc_rate_type is not null
528               THEN
529                  SELECT conversion_type
530                    INTO l_projfunc_bil_rate_type
531                    FROM pa_conversion_types_v
532                   WHERE user_conversion_type = p_event_in_rec.p_projfunc_rate_type
533                      or conversion_type = p_event_in_rec.p_projfunc_rate_type;
534                  p_event_in_rec.p_projfunc_rate_type := l_projfunc_bil_rate_type;
535              END IF;
536 
537              IF p_event_in_rec.p_project_rate_type is not null
538               THEN
539                  SELECT conversion_type
540                    INTO l_project_bil_rate_type
541                    FROM pa_conversion_types_v
542                   WHERE user_conversion_type = p_event_in_rec.p_project_rate_type
543                      or conversion_type = p_event_in_rec.p_project_rate_type;
544                  p_event_in_rec.p_project_rate_type := l_project_bil_rate_type;
545              END IF;
546 
547           --till here for code merge of bug 5458861
548 
549 
550         --validating and defaulting bill transaction currency code
551                   If (p_event_in_rec.P_bill_trans_currency_code Is NULL
552                         OR p_event_in_rec.P_bill_trans_currency_code=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
553                     Then
554                         p_event_in_rec.P_bill_trans_currency_code:=l_projfunc_currency_code;
555                   End If;
556 
557 	--funding rate,date and type validations
558                 If(p_event_in_rec.P_funding_rate_type Is NULL
559                         OR p_event_in_rec.P_funding_rate_type = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
560                    Then
561                         p_event_in_rec.P_funding_rate_type:=l_funding_rate_type;
562                 End If;
563 		If (l_funding_rate_date_code = 'FIXED_DATE')
564 		Then
565 			If(p_event_in_rec.P_funding_rate_date Is NULL
566                            OR p_event_in_rec.P_funding_rate_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
567                         Then
568                               p_event_in_rec.P_funding_rate_date:=l_funding_rate_date;
569 			End If;
570 		Else
571                    --Commented for Bug3009239
572 		   --	p_event_in_rec.P_funding_rate_date:=l_funding_rate_date;
573                    --Added for Bug3009239
574                         If(p_event_in_rec.P_funding_rate_date Is NULL
575                            OR p_event_in_rec.P_funding_rate_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
576                         Then
577                               p_event_in_rec.P_funding_rate_date:=l_funding_rate_date;
578                         End If;
579                    --till here for Bug3009239
580 		End If;
581 		--If fund rate type is User then only take the exchange rate from User
582 		--else default it from the project level.
583 /* The following block of code has been commented for bug 3045302
584                 If (p_event_in_rec.P_funding_rate_type <>l_funding_rate_type)
585                 Then
586                         If ( p_event_in_rec.P_funding_rate_type <> 'User' )
587                         Then
588                                 p_event_in_rec.P_funding_exchange_rate :=NULL;
589                         Else
590                            If(p_event_in_rec.P_funding_exchange_rate Is NULL
591                                OR p_event_in_rec.P_funding_exchange_rate =PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
592                            Then
593                                 p_event_in_rec.P_funding_exchange_rate:=l_funding_exchange_rate;
594                            End If;
595                            p_event_in_rec.P_funding_rate_date := null;  --Added for Bug3013256
596                         End If;
597 
598                 Else
599                         If(p_event_in_rec.P_funding_rate_type = 'User'
600                           AND (p_event_in_rec.P_funding_exchange_rate Is NULL
601                               OR p_event_in_rec.P_funding_exchange_rate =PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM))
602                         Then
603                                 p_event_in_rec.P_funding_exchange_rate :=l_funding_exchange_rate;
604                           p_event_in_rec.P_funding_rate_date := null; --Added for Bug3010927
605                         --Added for Bug3013256
606                         Else
607                            If ( p_event_in_rec.P_funding_rate_type <> 'User' ) THEN
608                                 p_event_in_rec.p_funding_exchange_rate := null;
609                            End If;
610                         --till here for Bug3013256
611                         End If;
612                 End If;
613 End of comment for bug 3045302 */
614 
615   /*Code added for bug  3045302 */
616                   If ( p_event_in_rec.P_funding_rate_type <> 'User' )
617                      Then
618                            p_event_in_rec.P_funding_exchange_rate :=NULL;
619                   Else
620                            If(p_event_in_rec.P_funding_exchange_rate Is NULL
621                                 OR p_event_in_rec.P_funding_exchange_rate =PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
622                                Then
623                                     p_event_in_rec.P_funding_exchange_rate:=l_funding_exchange_rate;
624                             End If;
625                           p_event_in_rec.P_funding_rate_date := null;  --Added for Bug3013256
626                   End If;
627 /*End of code change for Bug 3045302 */
628 /*The code for validation of project currency attributes has been moved from here
629   to below the validation of project functional currency attributes for
630   bug 3045302*/
631 	--project functional rate,date,type validaions
632 		If (p_event_in_rec.P_bill_trans_currency_code =  l_projfunc_currency_code )
633 		Then
634 			p_event_in_rec.P_projfunc_rate_type	:=NULL;
635 			p_event_in_rec.P_projfunc_rate_date	:=NULL;
636 			p_event_in_rec.P_projfunc_exchange_rate	:=NULL;
637 
638 		--start of validtions when project functional currency and bill trans currency are different.
639 		Else
640 			If(p_event_in_rec.P_projfunc_rate_type Is NULL
641 				OR p_event_in_rec.P_projfunc_rate_type=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
642 			   Then
643 				p_event_in_rec.P_projfunc_rate_type:=l_projfunc_bil_rate_type;
644 			End If;
645 
646 			If (l_projfunc_bil_rate_date_code= 'FIXED_DATE')
647 			Then
648 				If(p_event_in_rec.P_projfunc_rate_date Is NULL
649 					OR p_event_in_rec.P_projfunc_rate_date=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
650 				   Then
651                                         p_event_in_rec.P_projfunc_rate_date:=l_projfunc_bil_rate_date;
652 				End If;
653 			Else
654                            --Commented for Bug3009239
655 		           -- p_event_in_rec.P_projfunc_rate_date:=l_projfunc_bil_rate_date;
656                            --Added for Bug3009239
657                                 If(p_event_in_rec.P_projfunc_rate_date Is NULL
658                                         OR p_event_in_rec.P_projfunc_rate_date=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
659                                    Then
660                                         p_event_in_rec.P_projfunc_rate_date:=l_projfunc_bil_rate_date;
661                                 End If;
662                            --till here for Bug3009239
663 
664 			End If;
665 
666 		       If(p_event_in_rec.P_projfunc_rate_type <> l_projfunc_bil_rate_type)
667 		       Then
668 				If ( p_event_in_rec.P_projfunc_rate_type <> 'User' )
669 				Then
670 					p_event_in_rec.P_projfunc_exchange_rate:=NULL;
671                                 ELSE
672                                   If (p_event_in_rec.P_projfunc_exchange_rate Is NULL
673                                       OR p_event_in_rec.P_projfunc_exchange_rate=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
674                                   Then
675                                         p_event_in_rec.P_projfunc_exchange_rate:=l_projfunc_bil_exchange_rate;
676                                   End If;
677                                   p_event_in_rec.P_projfunc_rate_date := null; --Added for Bug3010927
678 				End If;
679 			Else
680 				If(p_event_in_rec.P_projfunc_rate_type = 'User')
681 				Then
682 				  If (p_event_in_rec.P_projfunc_exchange_rate Is NULL
683 				      OR p_event_in_rec.P_projfunc_exchange_rate=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
684 			          Then
685 					p_event_in_rec.P_projfunc_exchange_rate:=l_projfunc_bil_exchange_rate;
686 				  End If;
687                                   p_event_in_rec.P_projfunc_rate_date := null; --Added for Bug3010927
688 				Else
689                                   --Commented for Bug3013256
690 				  --p_event_in_rec.P_projfunc_exchange_rate:=l_projfunc_bil_exchange_rate;
691 				  p_event_in_rec.P_projfunc_exchange_rate:=null;  --Added for Bug3013256
692 				End If;
693 			End If;
694 		End If;
695 
696 --project rate,date and type validations
697 		If (p_event_in_rec.P_bill_trans_currency_code = l_project_currency_code)
698 		Then
699 			p_event_in_rec.P_project_rate_type	:=NULL;
700 			p_event_in_rec.P_project_rate_date	:=NULL;
701 			p_event_in_rec.P_project_exchange_rate	:=NULL;
702 
703 		--start of validations when project currency and bill trans currency are different.
704             --If project currency code is same as projfunc currency code default the
705             --attributes of project currency from project functional currency attributes.
706             --Change for bug 3045302
707 		Elsif  (l_project_currency_code= l_projfunc_currency_code)
708                   Then
709                   p_event_in_rec.P_project_rate_type     := p_event_in_rec.P_projfunc_rate_type;
710                   p_event_in_rec.P_project_rate_date     := p_event_in_rec.P_projfunc_rate_date;
711                   p_event_in_rec.P_project_exchange_rate := p_event_in_rec.P_projfunc_exchange_rate;
712             Else
713 			If(p_event_in_rec.P_project_rate_type Is NULL
714 				OR p_event_in_rec.P_project_rate_type =PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
715 			  Then
716 				p_event_in_rec.P_project_rate_type:=l_project_bil_rate_type;
717 			End If;
718 
719 			If (l_project_bil_rate_date_code = 'FIXED_DATE')
720 			Then
721 				If(p_event_in_rec.P_project_rate_date Is NULL
722 				    OR p_event_in_rec.P_project_rate_date =PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
723 				   Then
724 					p_event_in_rec.P_project_rate_date:=l_project_bil_rate_date;
725 				End If;
726 			Else
727                           --Commented for Bug3009239
728 		          --	p_event_in_rec.P_project_rate_date:=l_project_bil_rate_date;
729                           --Added for Bug3009239
730                                 If(p_event_in_rec.P_project_rate_date Is NULL
731                                     OR p_event_in_rec.P_project_rate_date =PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
732                                    Then
733                                         p_event_in_rec.P_project_rate_date:=l_project_bil_rate_date;
734                                 End If;
735                           --till here for Bug3009239
736 			End If;
737 
738 			If (p_event_in_rec.P_project_rate_type<>l_project_bil_rate_type)
739 			Then
740 				If ( p_event_in_rec.P_project_rate_type <> 'User' )
741 				Then
742 					p_event_in_rec.P_project_exchange_rate:=NULL;
743                                 ELSE
744                                    If(p_event_in_rec.P_project_exchange_rate Is NULL
745                                       OR p_event_in_rec.P_project_exchange_rate=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
746                                    Then
747                                         p_event_in_rec.P_project_exchange_rate:=l_project_bil_exchange_rate;
748                                    End If;
749                                   p_event_in_rec.P_project_rate_date := null;  --Added for Bug3045302
750 				End If;
751 			Else
752 				If(p_event_in_rec.P_project_rate_type= 'User')
753 				Then
754 				  If(p_event_in_rec.P_project_exchange_rate Is NULL
755 				      OR p_event_in_rec.P_project_exchange_rate=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
756 				  Then
757 					p_event_in_rec.P_project_exchange_rate:=l_project_bil_exchange_rate;
758 				  End If;
759                                   p_event_in_rec.P_project_rate_date := null;  --Added for Bug3010927
760 				Else
761                                   --Commented for Bug 3013256
762 			       	  --p_event_in_rec.P_project_exchange_rate:=l_project_bil_exchange_rate;
763                                          p_event_in_rec.P_project_exchange_rate := null;  --Added for Bug3013256
764 				End If;
765 			End If;
766                 End If;
767 
768 	Else
769 	--Defaulting the mcb columns when mcb is not enabled
770 		p_event_in_rec.P_project_rate_type:=l_project_bil_rate_type;
771 		p_event_in_rec.P_project_rate_date:=l_project_bil_rate_date;
772 		p_event_in_rec.P_project_exchange_rate:=l_project_bil_exchange_rate;
773 
774 		p_event_in_rec.P_projfunc_rate_type:=l_projfunc_bil_rate_type;
775 		p_event_in_rec.P_projfunc_rate_date:=l_projfunc_bil_rate_date;
776 		p_event_in_rec.P_projfunc_exchange_rate:=l_projfunc_bil_exchange_rate;
777 
778 		p_event_in_rec.P_funding_rate_type:=l_funding_rate_type;
779 		p_event_in_rec.P_funding_rate_date:=l_funding_rate_date;
780 		p_event_in_rec.P_funding_exchange_rate:=l_funding_exchange_rate;
781 
782 		p_event_in_rec.P_bill_trans_currency_code:=l_projfunc_currency_code;
783 	End If;
784 
785 	--Assigning null to event_id
786 	p_event_in_rec.p_event_id:=NULL;
787 
788           --Log Message
789           IF l_debug_mode = 'Y' THEN
790           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CREATE_EVENT.begin'
791                              ,x_msg         => 'Beginning Insert event. '
792                      ,x_log_level   => 5);
793           END IF;
794 
795    	/* Moving the following code block to an earlier part of this procedure for code merge of bug 5458861 */
796 
797           --Get the conversion_type for funding_rate_type, projfunc_rate_type and project_rate_type for bug3009239
798 /*             IF p_event_in_rec.p_funding_rate_type is not null
799               THEN
800                  SELECT conversion_type
801                    INTO l_funding_rate_type
802                    FROM pa_conversion_types_v
803                   WHERE user_conversion_type = p_event_in_rec.p_funding_rate_type
804                      or conversion_type = p_event_in_rec.p_funding_rate_type;
805                  p_event_in_rec.p_funding_rate_type := l_funding_rate_type;
806               END IF;
807 
808              IF p_event_in_rec.p_projfunc_rate_type is not null
809               THEN
810                  SELECT conversion_type
811                    INTO l_projfunc_bil_rate_type
812                    FROM pa_conversion_types_v
813                   WHERE user_conversion_type = p_event_in_rec.p_projfunc_rate_type
814                      or conversion_type = p_event_in_rec.p_projfunc_rate_type;
815                  p_event_in_rec.p_projfunc_rate_type := l_projfunc_bil_rate_type;
816              END IF;
817 
818              IF p_event_in_rec.p_project_rate_type is not null
819               THEN
820                  SELECT conversion_type
821                    INTO l_project_bil_rate_type
822                    FROM pa_conversion_types_v
823                   WHERE user_conversion_type = p_event_in_rec.p_project_rate_type
824                      or conversion_type = p_event_in_rec.p_project_rate_type;
825                  p_event_in_rec.p_project_rate_type := l_project_bil_rate_type;
826              END IF;
827           --till here for bug3009239
828 	Commented for code merge of bug 5458861 */
829 
830  -- Adding code to populate invoice and revenue attributes
831 
832     IF l_invproc_currency_type = 'PROJECT_CURRENCY' THEN
833        l_invproc_currency_code := l_project_currency_code;
834        l_invproc_rate_type     := p_event_in_rec.P_project_rate_type;
835        l_invproc_rate_date     := p_event_in_rec.P_project_rate_date;
836        l_invproc_exchange_rate := p_event_in_rec.P_project_exchange_rate;
837     ELSIF l_invproc_currency_type = 'PROJFUNC_CURRENCY' THEN
838        l_invproc_currency_code := l_projfunc_currency_code;
839        l_invproc_rate_type     := p_event_in_rec.P_projfunc_rate_type;
840        l_invproc_rate_date     := p_event_in_rec.P_projfunc_rate_date;
841        l_invproc_exchange_rate := p_event_in_rec.P_projfunc_exchange_rate;
842     ELSIF l_invproc_currency_type = 'FUNDING_CURRENCY' THEN
843        l_invproc_currency_code := '';
844        l_invproc_rate_type     := p_event_in_rec.P_funding_rate_type;
845        l_invproc_rate_date     := p_event_in_rec.P_funding_rate_date;
846        l_invproc_exchange_rate := p_event_in_rec.P_funding_exchange_rate;
847 
848     END IF;
849 
850     IF l_revproc_currency_code = l_projfunc_currency_code THEN
851        l_revproc_currency_code := l_projfunc_currency_code;
852        l_revproc_rate_type     := p_event_in_rec.P_projfunc_rate_type;
853        l_revproc_rate_date     := p_event_in_rec.P_projfunc_rate_date;
854        l_revproc_exchange_rate := p_event_in_rec.P_projfunc_exchange_rate;
855     END IF;
856 
857 --Added the following two calls for the bug 7513054
858 p_event_in_rec.P_bill_trans_bill_amount := PA_CURRENCY.ROUND_TRANS_CURRENCY_AMT(p_event_in_rec.P_bill_trans_bill_amount,p_event_in_rec.P_bill_trans_currency_code);
859 --dbms_output.put_line('bill amount rounded');
860 p_event_in_rec.P_bill_trans_rev_amount := PA_CURRENCY.ROUND_TRANS_CURRENCY_AMT(p_event_in_rec.P_bill_trans_rev_amount,p_event_in_rec.P_bill_trans_currency_code);
861 --dbms_output.put_line('rev amt rounded');
862 
863  -- Till here
864 
865 	  --Call to table handler to insert the events into the database
866 	  --Calling PA_EVENTS_PKG.
867 
868 	      PA_EVENTS_PKG.Insert_Row
869 		       (X_Rowid                      		=>rowid
870 		       ,X_Event_Id                      	=>p_event_in_rec.p_event_id
871 		       ,X_product_code                          =>p_pm_product_code
872 		       ,X_event_reference                       =>p_event_in_rec.p_pm_event_reference
873 		       ,X_Task_Id                               =>P_task_id
874 		       ,X_Event_Num                             =>p_event_in_rec.p_event_number
875 		       ,X_Last_Update_Date                      =>SYSDATE
876 		       ,X_Last_Updated_By                       =>G_USER_ID
877 		       ,X_Creation_Date                         =>SYSDATE
878 		       ,X_Created_By                            =>G_USER_ID
879 		       ,X_Last_Update_Login                     =>G_LOGIN_ID
880 		       ,X_Event_Type                            =>p_event_in_rec.P_event_type
881 		       ,X_Description                           =>p_event_in_rec.P_description
882 		       ,X_Bill_Amount                           =>0
883 		       ,X_Revenue_Amount                        =>0
884 		       ,X_Revenue_Distributed_Flag              =>'N'
885 		       ,X_Bill_Hold_Flag                        =>p_event_in_rec.P_bill_hold_flag
886 		       ,X_Completion_date                       =>p_event_in_rec.P_completion_date
887 		       ,X_Rev_Dist_Rejection_Code               =>NULL
888 		       ,X_Attribute_Category                    =>p_event_in_rec.P_attribute_category
889 		       ,X_Attribute1                            =>p_event_in_rec.P_attribute1
890 		       ,X_Attribute2                            =>p_event_in_rec.P_attribute2
891 		       ,X_Attribute3                            =>p_event_in_rec.P_attribute3
892 		       ,X_Attribute4                            =>p_event_in_rec.P_attribute4
893 		       ,X_Attribute5                            =>p_event_in_rec.P_attribute5
894 		       ,X_Attribute6                            =>p_event_in_rec.P_attribute6
895 		       ,X_Attribute7                            =>p_event_in_rec.P_attribute7
896 		       ,X_Attribute8                            =>p_event_in_rec.P_attribute8
897 		       ,X_Attribute9                            =>p_event_in_rec.P_attribute9
898 		       ,X_Attribute10                           =>p_event_in_rec.P_attribute10
899 		       ,X_Project_Id                            =>P_project_id
900 		       ,X_Organization_Id                       =>P_Organization_Id
901 		       ,X_Billing_Assignment_Id                 =>NULL
902 		       ,X_Event_Num_Reversed                    =>NULL
903 		       ,X_Calling_Place                         =>NULL
904 		       ,X_Calling_Process                       =>NULL
905 		       ,X_Bill_Trans_Currency_Code              =>p_event_in_rec.P_bill_trans_currency_code
906 		       ,X_Bill_Trans_Bill_Amount                =>p_event_in_rec.P_bill_trans_bill_amount
907 		       ,X_Bill_Trans_rev_Amount                 =>p_event_in_rec.P_bill_trans_rev_amount
908 		       ,X_Project_Currency_Code                 =>l_project_currency_code
909 		       ,X_Project_Rate_Type                     =>p_event_in_rec.P_project_rate_type
910 		       ,X_Project_Rate_Date                     =>p_event_in_rec.P_project_rate_date
911 		       ,X_Project_Exchange_Rate                 =>p_event_in_rec.P_project_exchange_rate
912 		       ,X_Project_Inv_Rate_Date                 =>NULL
913 		       ,X_Project_Inv_Exchange_Rate             =>NULL
914 		       ,X_Project_Bill_Amount                   =>NULL
915 		       ,X_Project_Rev_Rate_date                 =>NULL
916 		       ,X_Project_Rev_Exchange_Rate             =>NULL
917 		       ,X_Project_Revenue_Amount                =>NULL
918 		       ,X_ProjFunc_Currency_Code                =>l_projfunc_currency_code
919 		       ,X_ProjFunc_Rate_Type                    =>p_event_in_rec.P_projfunc_rate_type
920 		       ,X_ProjFunc_Rate_date                    =>p_event_in_rec.P_projfunc_rate_date
921 		       ,X_ProjFunc_Exchange_Rate                =>p_event_in_rec.P_projfunc_exchange_rate
922 		       ,X_ProjFunc_Inv_Rate_date                =>NULL
923 		       ,X_ProjFunc_Inv_Exchange_Rate            =>NULL
924 		       ,X_ProjFunc_Bill_Amount                  =>NULL
925 		       ,X_ProjFunc_Rev_Rate_date                =>NULL
926 		       ,X_Projfunc_Rev_Exchange_Rate            =>NULL
927 		       ,X_ProjFunc_Revenue_Amount               =>NULL
928 		       ,X_Funding_Rate_Type                     =>p_event_in_rec.P_funding_rate_type
929 		       ,X_Funding_Rate_date                     =>p_event_in_rec.P_funding_rate_date
930 		       ,X_Funding_Exchange_Rate                 =>p_event_in_rec.P_funding_exchange_rate
931 		       ,X_Invproc_Currency_Code                 =>l_invproc_currency_code
932 		       ,X_Invproc_Rate_Type                     =>l_invproc_rate_type
933 		       ,X_Invproc_Rate_date                     =>l_invproc_rate_date
934 		       ,X_Invproc_Exchange_Rate                 =>l_invproc_exchange_rate
935 		       ,X_Revproc_Currency_Code                 =>l_revproc_currency_code
936 		       ,X_Revproc_Rate_Type                     =>l_revproc_rate_type
937 		       ,X_Revproc_Rate_date                     =>l_revproc_rate_date
938 		       ,X_Revproc_Exchange_Rate                 =>l_revproc_exchange_rate
939 		       ,X_Inv_Gen_Rejection_Code                =>NULL
940 		       ,X_Adjusting_Revenue_Flag                =>p_event_in_rec.P_adjusting_revenue_flag
941 		       ,X_inventory_org_id			=>p_inv_org_id
942 		       ,X_inventory_item_id			=>p_event_in_rec.P_inventory_item_id
943 		       ,X_quantity_billed		        =>p_event_in_rec.P_quantity_billed
944                        ,X_uom_code		                =>p_event_in_rec.P_uom_code
945            		,X_unit_price		                =>p_event_in_rec.P_unit_price
946 			,X_reference1		                =>p_event_in_rec.P_reference1
947 			,X_reference2		                =>p_event_in_rec.P_reference2
948 			,X_reference3		                =>p_event_in_rec.P_reference3
949 			,X_reference4		                =>p_event_in_rec.P_reference4
950 			,X_reference5		                =>p_event_in_rec.P_reference5
951 			,X_reference6		                =>p_event_in_rec.P_reference6
952 			,X_reference7		                =>p_event_in_rec.P_reference7
953 			,X_reference8		                =>p_event_in_rec.P_reference8
954 			,X_reference9		                =>p_event_in_rec.P_reference9
955 			,X_reference10		                =>p_event_in_rec.P_reference10
956 			,X_Deliverable_Id		        =>p_event_in_rec.P_deliverable_id
957 			,X_Action_Id		                =>p_event_in_rec.P_action_id
958 			,X_Record_Version_Number	        => 1
959                         ,X_Agreement_Id                         =>p_agreement_id);  -- Fedral Uptake
960 
961 	--If commit is set to true then commit to database.
962 	    IF FND_API.to_boolean( p_commit )
963 	    THEN
964 		COMMIT;
965 	    END IF;
966 
967 	    EXCEPTION
968 		WHEN FND_API.G_EXC_ERROR
969 			THEN
970 			ROLLBACK TO create_event;
971 			l_return_status := FND_API.G_RET_STS_ERROR;
972 
973 		WHEN FND_API.G_EXC_UNEXPECTED_ERROR
974 			THEN
975 			ROLLBACK TO create_event;
976 			l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
977 
978                 WHEN pa_event_pvt.pub_excp
979                         THEN
980                         ROLLBACK TO create_event;
981 			l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
982 			PA_EVENT_PUB.PACKAGE_NAME
983 			:='(Event Reference='||p_event_in_rec.p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
984 			PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||'CREATE_EVENT';
985 
986 			IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
987 			THEN
988 				FND_MSG_PUB.add_exc_msg
989                                ( p_pkg_name            => PACKAGE_NAME
990                                , p_procedure_name      => PROCEDURE_NAME );
991 			PACKAGE_NAME:=NULL;
992 			PROCEDURE_NAME:=NULL;
993 			END IF;
994 
995 		WHEN OTHERS
996 			THEN
997 			ROLLBACK TO create_event;
998 			l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
999                 PA_EVENT_PUB.PACKAGE_NAME
1000 		:='(Event Reference='||p_event_in_rec.p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
1001                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'CREATE_EVENT';
1002 
1003                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1004                 THEN
1005                         FND_MSG_PUB.add_exc_msg
1006                                ( p_pkg_name            => PACKAGE_NAME
1007                                , p_procedure_name      => PROCEDURE_NAME );
1008                 PACKAGE_NAME:=NULL;
1009                 PROCEDURE_NAME:=NULL;
1010                 END IF;
1011 
1012 	   END;		--end of Inner Block
1013 
1014    --Populating the output table
1015    tot_out_rec := tot_out_rec + 1;     -- Added for bug#12964074
1016    p_event_out_tbl(tot_out_rec).pm_event_reference := p_event_in_rec.p_pm_event_reference;
1017    p_event_out_tbl(tot_out_rec).Event_Id           := p_event_in_rec.P_event_id;
1018    p_event_out_tbl(tot_out_rec).Return_status      := P_return_status;
1019  --  tot_out_rec := tot_out_rec + 1;   --Commented for bug#12964074
1020    tot_in_rec := p_event_in_tbl.next(tot_in_rec);
1021 
1022    pa_debug.reset_err_stack; -- Reset error stack
1023    END LOOP;    -- End of loop
1024 
1025 
1026    --Setting the return status to false even if one record fails the validation.
1027    p_return_status := l_return_status;
1028 
1029    --Extracting and returning error message if message count is 1.
1030    FND_MSG_PUB.Count_And_Get
1031 	( p_encoded           =>      l_encoded
1032 	 ,p_count             =>      p_msg_count
1033 	 ,p_data              =>      p_msg_data      );
1034 
1035 
1036 EXCEPTION
1037         WHEN FND_API.G_EXC_ERROR
1038            THEN
1039                 p_return_status := FND_API.G_RET_STS_ERROR;
1040                 FND_MSG_PUB.Count_And_Get
1041                         ( p_encoded           =>      l_encoded
1042        			 ,p_count             =>      p_msg_count
1043                          ,p_data              =>      p_msg_data      );
1044 
1045         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
1046            THEN
1047                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1048                 FND_MSG_PUB.Count_And_Get
1049                         ( p_encoded           =>      l_encoded
1050                          ,p_count             =>      p_msg_count
1051                          ,p_data              =>      p_msg_data      );
1052 
1053         WHEN pa_event_pvt.pub_excp
1054            THEN
1055                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1056                 PA_EVENT_PUB.PACKAGE_NAME
1057                 :='(event_reference='||p_event_in_rec.p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
1058                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||'CREATE_EVENT';
1059 
1060                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1061                 THEN
1062                         FND_MSG_PUB.add_exc_msg
1063                                ( p_pkg_name            => PACKAGE_NAME
1064                                , p_procedure_name      => PROCEDURE_NAME );
1065                 PACKAGE_NAME:=NULL;
1066                 PROCEDURE_NAME:=NULL;
1067                 END IF;
1068 
1069                 FND_MSG_PUB.Count_And_Get
1070                         ( p_encoded           =>      l_encoded
1071                          ,p_count             =>      p_msg_count
1072                          ,p_data              =>      p_msg_data      );
1073 
1074         WHEN OTHERS
1075            THEN
1076                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1077 		PA_EVENT_PUB.PACKAGE_NAME
1078 		:='(event_reference='||p_event_in_rec.p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
1079                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'CREATE_EVENT';
1080 
1081                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1082                 THEN
1083                         FND_MSG_PUB.add_exc_msg
1084                                ( p_pkg_name            => PACKAGE_NAME
1085                                , p_procedure_name      => PROCEDURE_NAME );
1086                 PACKAGE_NAME:=NULL;
1087                 PROCEDURE_NAME:=NULL;
1088                 END IF;
1089 
1090                 FND_MSG_PUB.Count_And_Get
1091                         ( p_encoded           =>      l_encoded
1092                          ,p_count             =>      p_msg_count
1093                          ,p_data              =>      p_msg_data      );
1094 
1095 END create_event;
1096 -- ============================================================================
1097 --
1098 --Name:               update_event
1099 --Type:               procedure
1100 --Description: This API updates an existing event or a set of existing events
1101 --
1102 --Called subprograms: PA_EVENT_PVT.CHECK_MDTY_PARAMS1
1103 --                    PA_EVENT_PVT.CHECK_MDTY_PARAMS2
1104 --		      PA_EVENT_PVT.check_update_event_ok
1105 --                    PA_EVENT_PVT.VALIDATE_FLEXFIELD
1106 --                    pa_events_pkg.update_row
1107 --
1108 --
1109 --
1110 --History:
1111 
1112 -- ============================================================================
1113 
1114 PROCEDURE UPDATE_EVENT
1115        ( p_api_version_number	IN	NUMBER
1116 	,p_commit		IN	VARCHAR2
1117 	,p_init_msg_list	IN	VARCHAR2
1118 	,p_pm_product_code	IN	VARCHAR2
1119 	,p_event_in_tbl		IN	Event_In_Tbl_Type
1120 	,p_event_out_tbl	OUT	NOCOPY Event_Out_Tbl_Type --File.Sql.39 bug 4440895
1121         ,p_msg_count            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
1122         ,p_msg_data             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1123         ,p_return_status        OUT     NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
1124 AS
1125 
1126 Cursor chk_proj_curs(P_project_number	VARCHAR2)
1127 Is
1128           Select project_id
1129           From   pa_projects_all
1130           Where  segment1 = P_project_number;
1131 
1132 p_inv_org_id			pa_events.inventory_item_id%type;
1133 P_project_id                    pa_events.project_id%type;
1134 l_project_id			pa_projects_all.project_id%type;
1135 P_task_id                       pa_events.task_id%type;
1136 l_task_id                       pa_events.task_id%type;
1137 P_Organization_Id               pa_projects_all.org_id%type;
1138 l_event_type_classification     pa_event_types.event_type_classification%type;
1139 P_agreement_id                  pa_events.agreement_id%type;      -- Federal Uptake
1140 
1141 P_event_id_out			pa_events.event_id%type;
1142 Rowid				VARCHAR2(18);
1143 p_event_in_rec                  Event_Rec_In_Type;
1144 p_event_out_rec                 Event_Rec_Out_Type;
1145 tot_in_rec			NUMBER:=0;
1146 tot_out_rec                     NUMBER:=0;
1147 p_api_name                      VARCHAR2(100):='UPDATE_EVENT';
1148 p_return_msg			VARCHAR2(2000);
1149 p_validate_status		VARCHAR2(1):='Y';
1150 l_bill_trans_curr_code                  pa_events.Bill_Trans_Currency_Code%type;
1151 l_project_currency_code			pa_events.Project_currency_code%type;
1152 l_Project_Inv_Exchange_Rate		pa_events.Project_Inv_Exchange_Rate%type;
1153 l_Project_Bill_Amount		        pa_events.Project_Bill_Amount%type;
1154 l_Project_Rev_Rate_date		        pa_events.Project_Rev_Rate_date%type;
1155 l_Project_Rev_Exchange_Rate		pa_events.Project_Rev_Exchange_Rate%type;
1156 l_Project_Revenue_Amount		pa_events.Project_Revenue_Amount%type;
1157 l_ProjFunc_Currency_Code		pa_events.ProjFunc_Currency_Code%type;
1158 l_ProjFunc_Inv_Rate_date		pa_events.ProjFunc_Inv_Rate_date%type;
1159 l_ProjFunc_Inv_Exchange_Rate		pa_events.ProjFunc_Inv_Exchange_Rate%type;
1160 l_ProjFunc_Bill_Amount		        pa_events.ProjFunc_Bill_Amount%type;
1161 l_ProjFunc_Rev_Rate_date		pa_events.ProjFunc_Rev_Rate_date%type;
1162 l_Projfunc_Rev_Exchange_Rate		pa_events.Projfunc_Rev_Exchange_Rate%type;
1163 l_ProjFunc_Revenue_Amount		pa_events.ProjFunc_Revenue_Amount%type;
1164 l_Invproc_Currency_Code		        pa_events.Invproc_Currency_Code%type;
1165 l_Invproc_Rate_Type		        pa_events.Invproc_Rate_Type%type;
1166 l_Invproc_Rate_date		        pa_events.Invproc_Rate_date%type;
1167 l_Invproc_Exchange_Rate		        pa_events.Invproc_Exchange_Rate%type;
1168 l_Revproc_Currency_Code		        pa_events.Revproc_Currency_Code%type;
1169 l_Revproc_Rate_Type		        pa_events.Revproc_Rate_Type%type;
1170 l_Revproc_Rate_date		        pa_events.Revproc_Rate_date%type;
1171 l_revproc_exchange_rate		        pa_events.revproc_exchange_rate%type;
1172 l_Inv_Gen_Rejection_Code		pa_events.Inv_Gen_Rejection_Code%type;
1173 l_project_bil_rate_date_code      	pa_projects_all.project_bil_rate_date_code%type;
1174 l_projfunc_bil_rate_date_code     	pa_projects_all.projfunc_bil_rate_date_code%type;
1175 l_multi_currency_billing_flag     	pa_projects_all.multi_currency_billing_flag%type;
1176 l_project_bil_rate_type			pa_events.project_rate_type%type;
1177 l_project_bil_rate_date			pa_events.project_rate_date%type;
1178 l_project_bil_exchange_rate		pa_events.project_exchange_rate%type;
1179 l_projfunc_bil_rate_type		pa_events.projfunc_rate_type%type;
1180 l_projfunc_bil_rate_date		pa_events.projfunc_rate_date%type;
1181 L_PROJFUNC_BIL_EXCHANGE_RATE		pa_events.PROJFUNC_EXCHANGE_RATE%type;
1182 L_FUNDING_RATE_TYPE			pa_events.FUNDING_RATE_TYPE%type;
1183 L_FUNDING_RATE_DATE			pa_events.FUNDING_RATE_DATE%type;
1184 L_FUNDING_EXCHANGE_RATE			pa_events.FUNDING_EXCHANGE_RATE%type;
1185 l_bill_trans_rev_amt                    pa_events.bill_trans_rev_amount%type;
1186 l_bill_trans_bill_amt                   pa_events.bill_trans_bill_amount%type;
1187 l_description				pa_events.description%type;
1188 l_bill_hold_flag 			pa_events.bill_hold_flag%type;
1189 L_adjusting_revenue_flag		pa_events.adjusting_revenue_flag%type;
1190 l_inventory_org_id			pa_events.inventory_org_id%type;
1191 l_inventory_item_id			pa_events.inventory_item_id%type;
1192 l_organization_id			pa_events.organization_id%type;
1193 l_funding_rate_date_code          pa_projects_all.funding_rate_date_code%TYPE;
1194 l_encoded                         	varchar2(1):='F';
1195 l_return_status 			varchar2(1):= FND_API.G_RET_STS_SUCCESS;
1196 l_record_version_number                 pa_events.record_version_number%TYPE;
1197 
1198 /* Added for bug 7110782 */
1199 l_event_processed           varchar2(1) := 'N';
1200 l_bill_amount               pa_events.bill_amount%type;
1201 l_revenue_amount            pa_events.revenue_amount%type;
1202 l_revenue_distributed_flag  pa_events.revenue_distributed_flag%type;
1203 l_rev_dist_rejection_code   pa_events.rev_dist_rejection_code%type;
1204 l_Billing_Assignment_Id     pa_events.Billing_Assignment_Id%type;
1205 l_Event_Num_Reversed        pa_events.Event_Num_Reversed%type;
1206 l_Calling_Place             pa_events.Calling_Place%type;
1207 l_Calling_Process           pa_events.Calling_Process%type;
1208 /* Added for bug 7110782 */
1209 
1210 BEGIN
1211 
1212   -- Initialize the Error Stack
1213   pa_debug.set_err_stack('PA_EVENT_PUB.UPDATE_EVENT');
1214 
1215   --Log Message
1216   IF l_debug_mode = 'Y' THEN
1217   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.UPDATE_EVENT.begin'
1218                      ,x_msg         => 'Beginning of Update Event'
1219                      ,x_log_level   => 5);
1220    END IF;
1221 
1222       p_msg_count := 0;
1223       p_return_status := FND_API.G_RET_STS_SUCCESS;
1224 
1225   --Log Message
1226   IF l_debug_mode = 'Y' THEN
1227   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.UPDATE_EVENT.begin'
1228                      ,x_msg         => 'Calling  mandatory input parameters-1'
1229                      ,x_log_level   => 5);
1230    END IF;
1231 
1232 -- Validating mandatory input parameters-1
1233 
1234    PA_EVENT_PVT.check_mdty_params1
1235     ( p_api_version_number             =>p_api_version_number
1236      ,p_api_name                       =>p_api_name
1237      ,p_pm_product_code                =>p_pm_product_code
1238      ,p_function_name                  =>'PA_EV_UPDATE_EVENT'
1239      ,x_return_status                  =>p_return_status
1240      ,x_msg_count                      =>p_msg_count
1241      ,x_msg_data                       =>p_msg_data );
1242 
1243 
1244    If p_return_status <> FND_API.G_RET_STS_SUCCESS
1245    Then
1246         IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1247         THEN
1248                         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1249 
1250         ELSIF p_return_status = FND_API.G_RET_STS_ERROR
1251         THEN
1252                         RAISE FND_API.G_EXC_ERROR;
1253         END IF;
1254    End If;
1255 
1256    tot_in_rec := p_event_in_tbl.first;
1257    while tot_in_rec is not null loop   -- loop begins
1258 -- For all date variables using trunc instead of ltrim(rtrim)for bug 3053669
1259 P_event_in_rec.P_pm_event_reference             :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_pm_event_reference));
1260 P_event_in_rec.P_task_number                    :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_task_number));
1261 P_event_in_rec.P_event_number                   :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_event_number));
1262 P_event_in_rec.P_event_type                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_event_type));
1263 -- Added the below three lines for Federal Uptake
1264 P_event_in_rec.P_agreement_number               :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_agreement_number));
1265 P_event_in_rec.P_agreement_type                 :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_agreement_type));
1266 P_event_in_rec.P_customer_number                :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_customer_number));
1267 P_event_in_rec.P_description                    :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_description));
1268 P_event_in_rec.P_bill_hold_flag                 :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_bill_hold_flag));
1269 P_event_in_rec.P_completion_date                :=trunc(p_event_in_tbl(tot_in_rec).P_completion_date);
1270 P_event_in_rec.P_desc_flex_name                 :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_desc_flex_name));
1271 P_event_in_rec.P_attribute_category             :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute_category));
1272 P_event_in_rec.P_attribute1                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute1));
1273 P_event_in_rec.P_attribute2                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute2));
1274 P_event_in_rec.P_attribute3                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute3));
1275 P_event_in_rec.P_attribute4                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute4));
1276 P_event_in_rec.P_attribute5                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute5));
1277 P_event_in_rec.P_attribute6                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute6));
1278 P_event_in_rec.P_attribute7                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute7));
1279 P_event_in_rec.P_attribute8                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute8));
1280 P_event_in_rec.P_attribute9                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute9));
1281 P_event_in_rec.P_attribute10                    :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_attribute10));
1282 P_event_in_rec.P_project_number                 :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_project_number));
1283 P_event_in_rec.P_organization_name              :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_organization_name));
1284 P_event_in_rec.P_inventory_org_name             :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_inventory_org_name));
1285 P_event_in_rec.P_inventory_item_id              :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_inventory_item_id));
1286 P_event_in_rec.P_quantity_billed                :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_quantity_billed));
1287 P_event_in_rec.P_uom_code                       :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_uom_code));
1288 P_event_in_rec.P_unit_price                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_unit_price));
1289 P_event_in_rec.P_reference1                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference1));
1290 P_event_in_rec.P_reference2                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference2));
1291 P_event_in_rec.P_reference3                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference3));
1292 P_event_in_rec.P_reference4                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference4));
1293 P_event_in_rec.P_reference5                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference5));
1294 P_event_in_rec.P_reference6                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference6));
1295 P_event_in_rec.P_reference7                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference7));
1296 P_event_in_rec.P_reference8                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference8));
1297 P_event_in_rec.P_reference9                     :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference9));
1298 P_event_in_rec.P_reference10                    :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_reference10));
1299 P_event_in_rec.P_bill_trans_currency_code       :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_bill_trans_currency_code));
1300 P_event_in_rec.P_bill_trans_bill_amount         :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_bill_trans_bill_amount));
1301 P_event_in_rec.P_bill_trans_rev_amount          :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_bill_trans_rev_amount));
1302 P_event_in_rec.P_project_rate_type              :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_project_rate_type));
1303 P_event_in_rec.P_project_rate_date              :=trunc(p_event_in_tbl(tot_in_rec).P_project_rate_date);
1304 P_event_in_rec.P_project_exchange_rate          :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_project_exchange_rate));
1305 P_event_in_rec.P_projfunc_rate_type             :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_projfunc_rate_type));
1306 P_event_in_rec.P_projfunc_rate_date             :=trunc(p_event_in_tbl(tot_in_rec).P_projfunc_rate_date);
1307 P_event_in_rec.P_projfunc_exchange_rate         :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_projfunc_exchange_rate));
1308 P_event_in_rec.P_funding_rate_type              :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_funding_rate_type));
1309 P_event_in_rec.P_funding_rate_date              :=trunc(p_event_in_tbl(tot_in_rec).P_funding_rate_date);
1310 P_event_in_rec.P_funding_exchange_rate          :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_funding_exchange_rate));
1311 P_event_in_rec.P_adjusting_revenue_flag         :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_adjusting_revenue_flag));
1312 P_event_in_rec.P_event_id                       :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_event_id));
1313 P_event_in_rec.P_deliverable_id                 :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_deliverable_id));
1314 P_event_in_rec.P_action_id                      :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_action_id));
1315 P_event_in_rec.P_context                        :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_context));
1316 P_event_in_rec.P_Record_Version_Number          :=ltrim(rtrim(p_event_in_tbl(tot_in_rec).P_record_version_number));
1317 
1318    BEGIN	--Start of Inner Block
1319 
1320 	--Set savepoint
1321 	   Savepoint Update_event;
1322 
1323           --Log Message
1324           IF l_debug_mode = 'Y' THEN
1325           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.UPDATE_EVENT.begin'
1326                              ,x_msg         => ' Calling mandatory input parameters-2'
1327                              ,x_log_level   => 5);
1328           END IF;
1329 
1330 	-- Validating mandatory input parameters-2
1331 /*Commenting out this call as the event reference is not a mandatory parameter.bug 3118781
1332 	   PA_EVENT_PVT.CHECK_MDTY_PARAMS2
1333 	   (  p_pm_event_reference    => p_event_in_rec.p_pm_event_reference
1334 	     ,p_pm_product_code       => p_pm_product_code
1335 	     ,p_project_number        => p_event_in_rec.p_project_number
1336 	     ,p_event_type            => p_event_in_rec.p_event_type
1337 	     ,p_organization_name     => p_event_in_rec.p_organization_name
1338 	     ,p_calling_place         => 'UPDATE_EVENT'
1339 	     ,x_return_status         => p_return_status );
1340 
1341 	   If p_return_status <> FND_API.G_RET_STS_SUCCESS
1342 	   Then
1343 		IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1344 		THEN
1345 				RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1346 
1347 		ELSIF p_return_status = FND_API.G_RET_STS_ERROR
1348 		THEN
1349 				RAISE FND_API.G_EXC_ERROR;
1350 		END IF;
1351 	   End If;
1352 End of comment for 3118781*/
1353           --Log Message
1354           IF l_debug_mode = 'Y' THEN
1355           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.UPDATE_EVENT.begin'
1356                              ,x_msg         => 'Calling conv_event_ref_to_id'
1357                              ,x_log_level   => 5);
1358           END IF;
1359 
1360 	--Call to validate the event_id or convert the event reference to event_id.
1361 	--If the validation fails then terminate further validation for this record.
1362 	  If PA_EVENT_PVT.CONV_EVENT_REF_TO_ID
1363 		(P_pm_product_code      =>P_pm_product_code
1364 		,P_pm_event_reference   =>p_event_in_rec.P_pm_event_reference
1365 		,P_event_id             =>p_event_in_rec.P_event_id)
1366 		='N'
1367 	  Then
1368 		p_return_status             := FND_API.G_RET_STS_ERROR;
1369 		RAISE FND_API.G_EXC_ERROR;
1370 	  End If;
1371 
1372 	--Deriving the project_id using the event_reference and product_code
1373 	  Select project_id, record_version_number
1374 	  Into P_project_id, p_event_in_rec.P_record_version_number
1375 	  From pa_events
1376 	  Where event_id = p_event_in_rec.P_event_id;
1377 
1378 
1379 	--Deriving the project_id using the project_number if provided.
1380 	  Open chk_proj_curs(p_event_in_rec.P_project_number);
1381 	  Fetch chk_proj_curs Into l_project_id;
1382 	  Close chk_proj_curs;
1383 
1384 
1385 	--validation to be done only if project number is provided.
1386 	If (P_project_id <> nvl(l_project_id,P_project_id))
1387 	Then
1388 	        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
1389 		THEN
1390                 pa_interface_utils_pub.map_new_amg_msg
1391                         ( p_old_message_code => 'PA_EV_REF_PROJ_MISS'
1392                         ,p_msg_attribute    => 'CHANGE'
1393                         ,p_resize_flag      => 'N'
1394                         ,p_msg_context      => 'EVENT'
1395                         ,p_attribute1       => P_event_in_rec.p_pm_event_reference
1396                         ,p_attribute2       => ''
1397                         ,p_attribute3       => ''
1398                         ,p_attribute4       => ''
1399                         ,p_attribute5       => '');
1400 		 END IF;
1401                  p_return_status             := FND_API.G_RET_STS_ERROR;
1402                  RAISE FND_API.G_EXC_ERROR;
1403 	End If;
1404 
1405           --Log Message
1406           IF l_debug_mode = 'Y' THEN
1407           pa_debug.write_log (x_module      =>'pa.plsql.PA_EVENT_PUB.UPDATE_EVENT.begin'
1408                              ,x_msg         =>'Defaulting currency from pa_events for the given event'
1409                              ,x_log_level   =>5);
1410           END IF;
1411 
1412 	--Select default currency from pa_events for the given event
1413 	--And use those for validations if the currency fields are not
1414 	--overwritten by the new changes.
1415 	Select   ev.Project_currency_code
1416 		,ev.ProjFunc_Inv_Rate_date
1417 		,ev.Project_Inv_Exchange_Rate
1418 		,ev.Project_Bill_Amount
1419 		,ev.Project_Rev_Rate_date
1420 		,ev.Project_Rev_Exchange_Rate
1421 		,ev.Project_Revenue_Amount
1422 		,ev.Project_Rate_type
1423 		,ev.Project_Rate_date
1424 		,ev.Project_Exchange_rate
1425 		,ev.ProjFunc_Currency_Code
1426 		,ev.ProjFunc_Inv_Rate_date
1427 		,ev.ProjFunc_Inv_Exchange_Rate
1428 		,ev.ProjFunc_Bill_Amount
1429 		,ev.ProjFunc_Rev_Rate_date
1430 		,ev.Projfunc_Rev_Exchange_Rate
1431 		,ev.ProjFunc_Revenue_Amount
1432 		,ev.ProjFunc_Rate_type
1433 		,ev.ProjFunc_Rate_date
1434 		,ev.ProjFunc_Exchange_rate
1435 		,ev.Invproc_Currency_Code
1436 		,ev.Invproc_Rate_Type
1437 		,ev.Invproc_Rate_date
1438 		,ev.Invproc_Exchange_Rate
1439 		,ev.Revproc_Currency_Code
1440 		,ev.Revproc_Rate_Type
1441 		,ev.Revproc_Rate_date
1442 		,ev.revproc_exchange_rate
1443 		,ev.Inv_Gen_Rejection_Code
1444 		,ev.Funding_Rate_type
1445 		,ev.Funding_Rate_date
1446 		,ev.Funding_Exchange_rate
1447                 ,ev.Bill_trans_currency_code
1448 	Into   l_project_currency_code
1449 		,l_ProjFunc_Inv_Rate_date
1450 		,l_Project_Inv_Exchange_Rate
1451 		,l_Project_Bill_Amount
1452 		,l_Project_Rev_Rate_date
1453 		,l_Project_Rev_Exchange_Rate
1454 		,l_Project_Revenue_Amount
1455 		,l_project_bil_rate_type
1456 		,l_project_bil_rate_date
1457 		,l_project_bil_exchange_rate
1458 		,l_ProjFunc_Currency_Code
1459 		,l_ProjFunc_Inv_Rate_date
1460 		,l_ProjFunc_Inv_Exchange_Rate
1461 		,l_ProjFunc_Bill_Amount
1462 		,l_ProjFunc_Rev_Rate_date
1463 		,l_Projfunc_Rev_Exchange_Rate
1464 		,l_ProjFunc_Revenue_Amount
1465 		,l_projfunc_bil_rate_type
1466 		,l_projfunc_bil_rate_date
1467 		,l_projfunc_bil_exchange_rate
1468 		,l_Invproc_Currency_Code
1469 		,l_Invproc_Rate_Type
1470 		,l_Invproc_Rate_date
1471 		,l_Invproc_Exchange_Rate
1472 		,l_Revproc_Currency_Code
1473 		,l_Revproc_Rate_Type
1474 		,l_Revproc_Rate_date
1475 		,l_revproc_exchange_rate
1476 		,l_Inv_Gen_Rejection_Code
1477 		,l_funding_rate_type
1478 		,l_funding_rate_date
1479 		,l_funding_exchange_rate
1480                 ,l_bill_trans_curr_code
1481 	  From  pa_events ev
1482 	 Where  event_id=p_event_in_rec.p_event_id;
1483 
1484 	Select  multi_currency_billing_flag
1485 	       ,funding_rate_date_code
1486 	       ,project_bil_rate_date_code
1487 	       ,projfunc_bil_rate_date_code
1488 	  Into l_multi_currency_billing_flag
1489                 ,l_funding_rate_date_code
1490 	       ,l_project_bil_rate_date_code
1491 	       ,l_projfunc_bil_rate_date_code
1492 	  From  pa_projects_all
1493 	 Where  project_id=P_project_id;
1494 
1495 
1496           --Log Message
1497           IF l_debug_mode = 'Y' THEN
1498           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.UPDATE_EVENT.begin'
1499                              ,x_msg         => 'Calling check_update_event_ok'
1500                              ,x_log_level   => 5);
1501           END IF;
1502 
1503 	-- Calls check_update_event_ok function
1504 	   If PA_EVENT_PVT.check_update_event_ok
1505 		(P_pm_product_code              =>p_pm_product_code
1506 		,P_event_in_rec                 =>p_event_in_rec
1507 		,P_project_currency_code        =>l_project_currency_code
1508 		,P_proj_func_currency_code      =>l_projfunc_currency_code
1509 		,P_project_bil_rate_date_code   =>l_project_bil_rate_date_code
1510 		,P_project_rate_type            =>l_project_bil_rate_type
1511 		,p_project_bil_rate_date	=>l_project_bil_rate_date
1512 		,p_projfunc_bil_rate_date_code  =>l_projfunc_bil_rate_date_code
1513 		,P_projfunc_rate_type           =>l_projfunc_bil_rate_type
1514 		,p_projfunc_bil_rate_date	=>l_projfunc_bil_rate_date
1515 		,P_funding_rate_type		=>l_funding_rate_type
1516 		,P_multi_currency_billing_flag  =>l_multi_currency_billing_flag
1517 		,P_event_type_classification    =>l_event_type_classification
1518 		,P_event_processed      =>l_event_processed  /* Added for bug Bug 7110782 */
1519                 ,p_project_id                   =>p_project_id
1520                 ,p_projfunc_bil_exchange_rate   =>l_projfunc_bil_exchange_rate -- Added for bug 3013137
1521                 ,p_funding_bill_rate_date_code   =>l_funding_rate_date_code --Added for bug 3053190
1522                 ,x_task_id                      =>p_task_id
1523                 ,x_organization_id              =>p_organization_id
1524 		,x_inv_org_id			=>p_inv_org_id
1525                 ,x_agreement_id                 =>P_agreement_id  -- Federal Uptake
1526 		 ) = 'N'
1527 	   Then
1528 		p_return_status             := FND_API.G_RET_STS_ERROR;
1529 		RAISE FND_API.G_EXC_ERROR;
1530 
1531 	   End If;
1532 
1533           --Log Message
1534           IF l_debug_mode = 'Y' THEN
1535           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.UPDATE_EVENT.begin'
1536                              ,x_msg         => 'Beginning Validate Flexfields'
1537                              ,x_log_level   => 5);
1538           END IF;
1539 
1540 	--Validating Flexfields
1541 	   IF (p_event_in_rec.p_desc_flex_name IS NOT NULL)
1542 	       AND (p_event_in_rec.p_desc_flex_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
1543 	   THEN
1544 		   PA_EVENT_PVT.VALIDATE_FLEXFIELD
1545 			( p_desc_flex_name        => p_event_in_rec.p_desc_flex_name
1546 			 ,p_attribute_category    => p_event_in_rec.p_attribute_category
1547 			 ,p_attribute1            => p_event_in_rec.p_attribute1
1548 			 ,p_attribute2            => p_event_in_rec.p_attribute2
1549 			 ,p_attribute3            => p_event_in_rec.p_attribute3
1550 			 ,p_attribute4            => p_event_in_rec.p_attribute4
1551 			 ,p_attribute5            => p_event_in_rec.p_attribute5
1552 			 ,p_attribute6            => p_event_in_rec.p_attribute6
1553 			 ,p_attribute7            => p_event_in_rec.p_attribute7
1554 			 ,p_attribute8            => p_event_in_rec.p_attribute8
1555 			 ,p_attribute9            => p_event_in_rec.p_attribute9
1556 			 ,p_attribute10           => p_event_in_rec.p_attribute10
1557 			 ,p_return_msg            => p_return_msg
1558 			 ,p_valid_status       => p_validate_status);
1559 		     IF p_validate_status = 'N'
1560 		     THEN
1561 			IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
1562 			THEN
1563 				pa_interface_utils_pub.map_new_amg_msg
1564 					( p_old_message_code => 'PA_INVALID_FF_VALUES'
1565 					,p_msg_attribute    => 'CHANGE'
1566 					,p_resize_flag      => 'N'
1567 					,p_msg_context      => 'EVENT'
1568 					,p_attribute1       => p_event_in_rec.p_pm_event_reference
1569 					,p_attribute2       => ''
1570 					,p_attribute3       => ''
1571 					,p_attribute4       => ''
1572 					,p_attribute5       => '');
1573 			END IF;
1574 			p_return_status             := FND_API.G_RET_STS_ERROR;
1575 			RAISE FND_API.G_EXC_ERROR;
1576 		      END IF;
1577                 --Defaulting attribute categories.
1578                 Select   decode(p_event_in_rec.P_attribute_category
1579                                         ,NULL,attribute_category
1580                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1581                                         ,p_event_in_rec.P_attribute_category)
1582                         ,decode(p_event_in_rec.P_attribute1
1583                                         ,NULL,attribute1
1584                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1585                                         ,p_event_in_rec.P_attribute1)
1586                         ,decode(p_event_in_rec.P_attribute2
1587                                         ,NULL,attribute2
1588                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1589                                         ,p_event_in_rec.P_attribute2)
1590                         ,decode(p_event_in_rec.P_attribute3
1591                                         ,NULL,attribute3
1592                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1593                                         ,p_event_in_rec.P_attribute3)
1594                         ,decode(p_event_in_rec.P_attribute4
1595                                         ,NULL,attribute4
1596                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1597                                         ,p_event_in_rec.P_attribute4 )
1598                         ,decode(p_event_in_rec.P_attribute5
1599                                         ,NULL,attribute5
1600                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1601                                         ,p_event_in_rec.P_attribute5 )
1602                         ,decode(p_event_in_rec.P_attribute6
1603                                         ,NULL,attribute6
1604                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1605                                         ,p_event_in_rec.P_attribute6 )
1606                         ,decode(p_event_in_rec.P_attribute7
1607                                         ,NULL,attribute7
1608                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1609                                         ,p_event_in_rec.P_attribute7 )
1610                         ,decode(p_event_in_rec.P_attribute8
1611                                         ,NULL,attribute8
1612                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1613                                         ,p_event_in_rec.P_attribute8 )
1614                         ,decode(p_event_in_rec.P_attribute9
1615                                         ,NULL,attribute9
1616                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1617                                         ,p_event_in_rec.P_attribute9 )
1618                         ,decode(p_event_in_rec.P_attribute10
1619                                         ,NULL,attribute10
1620                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1621                                         ,p_event_in_rec.P_attribute10 )
1622 		  Into   p_event_in_rec.P_attribute_category
1623                         ,p_event_in_rec.P_attribute1
1624                         ,p_event_in_rec.P_attribute2
1625                         ,p_event_in_rec.P_attribute3
1626                         ,p_event_in_rec.P_attribute4
1627                         ,p_event_in_rec.P_attribute5
1628                         ,p_event_in_rec.P_attribute6
1629                         ,p_event_in_rec.P_attribute7
1630                         ,p_event_in_rec.P_attribute8
1631                         ,p_event_in_rec.P_attribute9
1632                         ,p_event_in_rec.P_attribute10
1633                   From   pa_events
1634                   Where  event_id=p_event_in_rec.P_event_id;
1635 
1636              Else
1637                         p_event_in_rec.P_desc_flex_name         :=NULL;
1638                         p_event_in_rec.P_attribute_category     :=NULL;
1639                         p_event_in_rec.P_attribute1             :=NULL;
1640                         p_event_in_rec.P_attribute2             :=NULL;
1641                         p_event_in_rec.P_attribute3             :=NULL;
1642                         p_event_in_rec.P_attribute4             :=NULL;
1643                         p_event_in_rec.P_attribute5             :=NULL;
1644                         p_event_in_rec.P_attribute6             :=NULL;
1645                         p_event_in_rec.P_attribute7             :=NULL;
1646                         p_event_in_rec.P_attribute8             :=NULL;
1647                         p_event_in_rec.P_attribute9             :=NULL;
1648                         p_event_in_rec.P_attribute10            :=NULL;
1649 	     END IF;
1650 
1651           --Log Message
1652           IF l_debug_mode = 'Y' THEN
1653           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.UPDATE_EVENT.begin'
1654                              ,x_msg         => 'Beginning defaulting mcb parameters'
1655                              ,x_log_level   => 5);
1656           END IF;
1657 
1658 
1659         --Before defaulting the mcb related paramaters validating
1660         --if the User has overwritten any of the fields.
1661         If (l_multi_currency_billing_flag = 'Y')
1662         Then
1663         --validating and defaulting bill transaction currency code
1664                   If (p_event_in_rec.P_bill_trans_currency_code Is NULL
1665                      OR p_event_in_rec.P_bill_trans_currency_code=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
1666                   Then
1667                         p_event_in_rec.P_bill_trans_currency_code:=l_bill_trans_curr_code; /* 3013117 */
1668                   End If;
1669 
1670         --funding rate,date and type validations
1671                 If(p_event_in_rec.P_funding_rate_type Is NULL
1672                         OR p_event_in_rec.P_funding_rate_type = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
1673                    Then
1674                         p_event_in_rec.P_funding_rate_type:=l_funding_rate_type;
1675                 End If;
1676 
1677                 If (l_funding_rate_date_code = 'FIXED_DATE')
1678                 Then
1679                         If(p_event_in_rec.P_funding_rate_date Is NULL
1680                            OR p_event_in_rec.P_funding_rate_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
1681                         Then
1682                               p_event_in_rec.P_funding_rate_date:=l_funding_rate_date;
1683                         End If;
1684                 Else
1685                      --Commented for bug3013236
1686                      --p_event_in_rec.P_funding_rate_date:=l_funding_rate_date;
1687                      --Added for bug3013236
1688                         If(p_event_in_rec.P_funding_rate_date Is NULL
1689                            OR p_event_in_rec.P_funding_rate_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
1690                         Then
1691                              p_event_in_rec.P_funding_rate_date:=l_funding_rate_date;
1692                         End If;
1693                      --till here for Bug3013236
1694                 End If;
1695 
1696                 --If fund rate type is User then only take the exchange rate from User
1697                 --else default it from the project level.
1698 /*  The following part of the code is commented out and rewritten at the bottom. for bug 3045302
1699 
1700                 If (p_event_in_rec.P_funding_rate_type <>l_funding_rate_type)
1701                 Then
1702                         If ( p_event_in_rec.P_funding_rate_type <> 'User' )
1703                         Then
1704                                 p_event_in_rec.P_funding_exchange_rate :=NULL;
1705                         Else
1706                            If(p_event_in_rec.P_funding_exchange_rate Is NULL
1707                                OR p_event_in_rec.P_funding_exchange_rate =PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
1708                            Then
1709                                 p_event_in_rec.P_funding_exchange_rate:=l_funding_exchange_rate;
1710                            End If;
1711                            p_event_in_rec.P_funding_rate_date := null; --Added for Bug3010927
1712                         End If;
1713                 Else
1714                         If(p_event_in_rec.P_funding_rate_type = 'User'
1715                           AND (p_event_in_rec.P_funding_exchange_rate Is NULL
1716                               OR p_event_in_rec.P_funding_exchange_rate =PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM))
1717                         Then
1718                                 p_event_in_rec.P_funding_exchange_rate :=l_funding_exchange_rate;
1719                         --Added for Bug3013256
1720                         Else
1721                              IF ( p_event_in_rec.P_funding_rate_type <> 'User' )
1722                              Then
1723                                 p_event_in_rec.P_funding_exchange_rate := null;
1724                              End If;
1725                         --till here for Bug3013256
1726                         End If;
1727                         p_event_in_rec.p_funding_rate_date := null; --Added for Bug3010927
1728                 End If;
1729 End of commenting  for Bug  3045302  */
1730 /*This is the code added for bug 3045302.*/
1731                    If  ( p_event_in_rec.P_funding_rate_type <> 'User' )
1732                          Then
1733                                  p_event_in_rec.P_funding_exchange_rate :=NULL;
1734                    Else
1735                          If (p_event_in_rec.P_funding_exchange_rate Is NULL
1736                                OR p_event_in_rec.P_funding_exchange_rate =PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
1737                             Then
1738                                    p_event_in_rec.P_funding_exchange_rate:=l_funding_exchange_rate;
1739                          End If;
1740                       p_event_in_rec.P_funding_rate_date := null;
1741                  End If;
1742 /*End of code added for bug 3045302  */
1743 /*The code for validation of project currency attributes has been moved
1744   below the code for validation of project functional attributes
1745   for bug     3045302   */
1746 
1747         --project functional rate,date,type validaions
1748                 If (p_event_in_rec.P_bill_trans_currency_code =  l_projfunc_currency_code )
1749                 Then
1750                         p_event_in_rec.P_projfunc_rate_type	:=NULL;
1751                         p_event_in_rec.P_projfunc_rate_date	:=NULL;
1752                         p_event_in_rec.P_projfunc_exchange_rate	:=NULL;
1753                 Else   ---validtions if project functional currency and bill trans currency are different.
1754                         If(p_event_in_rec.P_projfunc_rate_type Is NULL
1755                                 OR p_event_in_rec.P_projfunc_rate_type=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
1756                            Then
1757                                 p_event_in_rec.P_projfunc_rate_type:=l_projfunc_bil_rate_type;
1758                         End If;
1759 
1760                         If (l_projfunc_bil_rate_date_code= 'FIXED_DATE')
1761                         Then
1762                                 If(p_event_in_rec.P_projfunc_rate_date Is NULL
1763                                         OR p_event_in_rec.P_projfunc_rate_date=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
1764                                    Then
1765                                         p_event_in_rec.P_projfunc_rate_date:=l_projfunc_bil_rate_date;
1766                                 End If;
1767 			Else
1768                             --Commented for Bug3013236
1769                 	    --     p_event_in_rec.P_projfunc_rate_date:=l_projfunc_bil_rate_date;
1770                             --Added for Bug3013236
1771                                 If(p_event_in_rec.P_projfunc_rate_date Is NULL
1772                                         OR p_event_in_rec.P_projfunc_rate_date=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
1773                                    Then
1774                                         p_event_in_rec.P_projfunc_rate_date:=l_projfunc_bil_rate_date;
1775                                 End If;
1776                             --till here for Bug3013236
1777                         End If;
1778 
1779                        If(p_event_in_rec.P_projfunc_rate_type <> l_projfunc_bil_rate_type)
1780                        Then
1781                                 If ( p_event_in_rec.P_projfunc_rate_type <> 'User' )
1782                                 Then
1783                                         p_event_in_rec.P_projfunc_exchange_rate:=NULL;
1784                                 Else
1785                                      If (p_event_in_rec.P_projfunc_exchange_rate Is NULL
1786                                          OR p_event_in_rec.P_projfunc_exchange_rate=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
1787                                      Then
1788                                            p_event_in_rec.P_projfunc_exchange_rate:=l_projfunc_bil_exchange_rate;
1789                                      End If;
1790                                   p_event_in_rec.P_projfunc_rate_date := null; --Added for Bug3010927
1791                                 End If;
1792                         Else
1793                                 If(p_event_in_rec.P_projfunc_rate_type = 'User')
1794                                 Then
1795                                   If (p_event_in_rec.P_projfunc_exchange_rate Is NULL
1796                                       OR p_event_in_rec.P_projfunc_exchange_rate=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
1797                                   Then
1798                                         p_event_in_rec.P_projfunc_exchange_rate:=l_projfunc_bil_exchange_rate;
1799                                   End If;
1800                                   p_event_in_rec.P_projfunc_rate_date := null; --Added for Bug3010927
1801                                 Else
1802                                   --Commented for Bug3013256
1803                                   --p_event_in_rec.P_projfunc_exchange_rate:=l_projfunc_bil_exchange_rate;
1804                                     p_event_in_rec.P_projfunc_exchange_rate:=null; --Added for Bug3013256
1805                                 End If;
1806                         End If;
1807                 End If;
1808   --project rate,date and type validations
1809   --For bug 3045302.Changed the logic to default the project currency attributes
1810   --from the project functional currency if project currency is same as project functional currency.
1811                 If (p_event_in_rec.P_bill_trans_currency_code = l_project_currency_code)
1812                 Then
1813                         p_event_in_rec.P_project_rate_type	:=NULL;
1814                         p_event_in_rec.P_project_rate_date	:=NULL;
1815                         p_event_in_rec.P_project_exchange_rate	:=NULL;
1816 
1817                 Elsif (l_project_currency_code = l_projfunc_currency_code )
1818                 Then
1819                         p_event_in_rec.P_project_rate_type	    := p_event_in_rec.P_projfunc_rate_type;
1820                         p_event_in_rec.P_project_rate_date	    := p_event_in_rec.P_projfunc_rate_date;
1821                         p_event_in_rec.P_project_exchange_rate  := p_event_in_rec.P_projfunc_exchange_rate;
1822 
1823                  Else
1824                 ---validations if project currency and bill trans currency are different.
1825                         If(p_event_in_rec.P_project_rate_type Is NULL
1826                                 OR p_event_in_rec.P_project_rate_type =PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
1827                           Then
1828                                 p_event_in_rec.P_project_rate_type:=l_project_bil_rate_type;
1829                         End If;
1830 
1831                         If (l_project_bil_rate_date_code = 'FIXED_DATE')
1832                         Then
1833                                 If(p_event_in_rec.P_project_rate_date Is NULL
1834                                     OR p_event_in_rec.P_project_rate_date =PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
1835                                    Then
1836                                         p_event_in_rec.P_project_rate_date:=l_project_bil_rate_date;
1837                                 End If;
1838                         Else
1839                         --Commented for Bug3013236
1840                         --p_event_in_rec.P_project_rate_date:=l_project_bil_rate_date;
1841                         --Added for Bug3013236
1842                                 If(p_event_in_rec.P_project_rate_date Is NULL
1843                                     OR p_event_in_rec.P_project_rate_date =PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
1844                                    Then
1845                                         p_event_in_rec.P_project_rate_date:=l_project_bil_rate_date;
1846                                 End If;
1847                         --till here for Bug3013236
1848                         End If;
1849 
1850                        If (p_event_in_rec.P_project_rate_type<>l_project_bil_rate_type)
1851                         Then
1852                                 If ( p_event_in_rec.P_project_rate_type <> 'User' )
1853                                 Then
1854                                         p_event_in_rec.P_project_exchange_rate:=NULL;
1855                                 Else
1856                                      If(p_event_in_rec.P_project_exchange_rate Is NULL
1857                                          OR p_event_in_rec.P_project_exchange_rate=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
1858                                      Then
1859                                            p_event_in_rec.P_project_exchange_rate:=l_project_bil_exchange_rate;
1860                                      End If;
1861                                   p_event_in_rec.P_project_rate_date := null;  --Added for Bug3010927
1862                                 End If;
1863                         Else
1864                                 If(p_event_in_rec.P_project_rate_type= 'User')
1865                                 Then
1866                                   If(p_event_in_rec.P_project_exchange_rate Is NULL
1867                                       OR p_event_in_rec.P_project_exchange_rate=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
1868                                   Then
1869                                         p_event_in_rec.P_project_exchange_rate:=l_project_bil_exchange_rate;
1870                                   End If;
1871                                   p_event_in_rec.P_project_rate_date := null;  --Added for Bug3010927
1872                                 Else
1873                                   --Commented for Bug3013256
1874                                   --p_event_in_rec.P_project_exchange_rate:=l_project_bil_exchange_rate;
1875                                     p_event_in_rec.P_project_exchange_rate:=null; --Added for Bug3013256
1876                                 End If;
1877                         End If;
1878                 End If;
1879 
1880         Else
1881         --Defaulting the mcb columns when mcb is not enabled
1882                 p_event_in_rec.P_project_rate_type:=l_project_bil_rate_type;
1883                 p_event_in_rec.P_project_rate_date:=l_project_bil_rate_date;
1884                 p_event_in_rec.P_project_exchange_rate:=l_project_bil_exchange_rate;
1885 
1886                 p_event_in_rec.P_projfunc_rate_type:=l_projfunc_bil_rate_type;
1887                 p_event_in_rec.P_projfunc_rate_date:=l_projfunc_bil_rate_date;
1888                 p_event_in_rec.P_projfunc_exchange_rate:=l_projfunc_bil_exchange_rate;
1889 
1890                 p_event_in_rec.P_funding_rate_type:=l_funding_rate_type;
1891                 p_event_in_rec.P_funding_rate_date:=l_funding_rate_date;
1892                 p_event_in_rec.P_funding_exchange_rate:=l_funding_exchange_rate;
1893 
1894 		p_event_in_rec.P_bill_trans_currency_code:=l_projfunc_currency_code;
1895         End If;
1896 
1897 
1898 	 --Log Message
1899           IF l_debug_mode = 'Y' THEN
1900           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.UPDATE_EVENT.begin'
1901                              ,x_msg         => 'Beginning defaulting parameters before updating table'
1902                              ,x_log_level   => 5);
1903           END IF;
1904 
1905 
1906                 -- Validating the event num.
1907 		--If task number has been changed then generate new event_num
1908 		--before inserting the record into pa_events.
1909 		If (p_event_in_rec.P_event_number Is NULL
1910                         OR p_event_in_rec.P_event_number = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
1911                 Then
1912                    SELECT task_id
1913                    INTO   l_task_id
1914                    FROM   pa_events e
1915                    Where  event_id=p_event_in_rec.P_event_id;
1916 
1917 		--Validating if the existing task_id matches with the updated task_id
1918 		--In case of any mismatch new event_number is generated before updating the record.
1919 		   If p_event_in_rec.p_task_number  is NOT NULL
1920 		   Then
1921 			If (nvl(P_task_id,-1) <> nvl(l_task_id,-1))
1922 			Then
1923                           --generating event number for project level events
1924 				  If (P_task_id Is NULL )
1925 				  Then
1926 					SELECT NVL(max(event_num),0)+1
1927 					INTO P_event_in_rec.p_event_number
1928 					FROM pa_events e
1929 					WHERE e.project_id = P_project_id
1930 					AND e.task_id IS NULL;
1931 				  Else
1932 				  --generating event number for task level events
1933 					SELECT NVL(max(event_num),0)+1
1934 					INTO P_event_in_rec.p_event_number
1935 					FROM pa_events e
1936 					WHERE e.project_id =P_project_id
1937 					AND e.task_id    = P_task_id;
1938 				  End If;
1939                         --If task number is the same defaulting the event number.
1940                         Else
1941                                         SELECT event_num
1942                                         INTO P_event_in_rec.p_event_number
1943                                         FROM pa_events e
1944                                         Where  event_id=p_event_in_rec.P_event_id;
1945                         End If;
1946                    Else
1947 			SELECT event_num
1948 			INTO P_event_in_rec.p_event_number
1949 			FROM pa_events e
1950 			Where  event_id=p_event_in_rec.P_event_id;
1951                    End If;  /* If p_event_in_rec.p_task_number  is NOT NULL */
1952 		End If;  /* If event_num is null , '^' */
1953 
1954 		--Populating the rowid
1955 		  Select Rowid
1956 		  Into rowid
1957 		  From pa_events
1958 		  Where event_id=p_event_in_rec.p_event_id;
1959 
1960 		--Defaulting bill_hold_flag,adjusting_revenue_flag.
1961                   Select decode(p_event_in_rec.P_bill_hold_flag
1962 					,NULL,BILL_HOLD_FLAG
1963 					,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1964 					,p_event_in_rec.P_bill_hold_flag)
1965                         ,decode(p_event_in_rec.P_adjusting_revenue_flag
1966 					,NULL,ADJUSTING_REVENUE_FLAG
1967 					,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1968 					,p_event_in_rec.P_adjusting_revenue_flag)
1969 		--Defaulting inventory org id and item ids
1970                         ,decode(p_event_in_rec.P_inventory_org_name
1971                                         ,NULL,inventory_org_id
1972                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1973                                         ,p_inv_org_id)
1974                         ,decode(p_event_in_rec.P_inventory_item_id
1975                                         ,NULL,inventory_item_id
1976                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,NULL
1977                                         ,p_event_in_rec.P_inventory_item_id)
1978 		--Defaulting organization id.
1979                         ,decode(p_event_in_rec.P_organization_name
1980                                         ,NULL,organization_id
1981                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,organization_id
1982                                         ,p_organization_id)
1983 		--Defaulting OKE related fields.
1984                         ,decode(p_event_in_rec.P_quantity_billed
1985                                         ,NULL,quantity_billed
1986                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,NULL
1987                                         ,p_event_in_rec.P_quantity_billed)
1988                         ,decode(p_event_in_rec.P_uom_code
1989                                         ,NULL,uom_code
1990                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1991                                         ,p_event_in_rec.P_uom_code)
1992                         ,decode(p_event_in_rec.P_unit_price
1993                                         ,NULL,unit_price
1994                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
1995                                         ,p_event_in_rec.P_unit_price)
1996                 --Defaulting references.
1997                         ,decode(p_event_in_rec.P_reference1
1998                                         ,NULL,reference1
1999                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
2000                                         ,p_event_in_rec.P_reference1)
2001                         ,decode(p_event_in_rec.P_reference2
2002                                         ,NULL,reference2
2003                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
2004                                         ,p_event_in_rec.P_reference2)
2005                         ,decode(p_event_in_rec.P_reference3
2006                                         ,NULL,reference3
2007                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
2008                                         ,p_event_in_rec.P_reference3)
2009                         ,decode(p_event_in_rec.P_reference4
2010                                         ,NULL,reference4
2011                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
2012                                         ,p_event_in_rec.P_reference4 )
2013                         ,decode(p_event_in_rec.P_reference5
2014                                         ,NULL,reference5
2015                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
2016                                         ,p_event_in_rec.P_reference5 )
2017                         ,decode(p_event_in_rec.P_reference6
2018                                         ,NULL,reference6
2019                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
2020                                         ,p_event_in_rec.P_reference6 )
2021                         ,decode(p_event_in_rec.P_reference7
2022                                         ,NULL,reference7
2023                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
2024                                         ,p_event_in_rec.P_reference7 )
2025                         ,decode(p_event_in_rec.P_reference8
2026                                         ,NULL,reference8
2027                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
2028                                         ,p_event_in_rec.P_reference8 )
2029                         ,decode(p_event_in_rec.P_reference9
2030                                         ,NULL,reference9
2031                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
2032                                         ,p_event_in_rec.P_reference9 )
2033                         ,decode(p_event_in_rec.P_reference10
2034                                         ,NULL,reference10
2035                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
2036                                         ,p_event_in_rec.P_reference10 )
2037 		--defaulting completion date
2038 			,decode(p_event_in_rec.P_completion_date
2039 					,NULL,completion_date
2040 					,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,SYSDATE
2041 					,p_event_in_rec.P_completion_date)
2042 		--Defaulting event type.
2043 			,decode(p_event_in_rec.P_event_type
2044 					,NULL,event_type
2045 					,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,event_type
2046 					,p_event_in_rec.P_event_type)
2047 		--Defaulting bill trans revenue and bill trans bill amounts
2048 			,decode(p_event_in_rec.P_bill_trans_rev_amount
2049 					,NULL,bill_trans_rev_amount
2050 					,p_event_in_rec.P_bill_trans_rev_amount)
2051                         ,decode(p_event_in_rec.P_bill_trans_bill_amount
2052                                         ,NULL,bill_trans_bill_amount
2053                                         ,p_event_in_rec.P_bill_trans_bill_amount)
2054 		--Defaulting task_id.
2055                         ,decode(p_event_in_rec.p_task_number
2056                                         ,NULL,task_id
2057                                         ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,NULL
2058                                         ,P_task_id)
2059                         ,decode(p_event_in_rec.p_description, null, description,
2060                                 PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR, description, p_event_in_rec.p_description)
2061                         ,record_version_number
2062                         ,decode(ADJUSTING_REVENUE_FLAG,'N', /* Added for bug 6863270 */
2063                         decode(p_event_in_rec.p_bill_trans_bill_amount, PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM, bill_trans_bill_amount,
2064                                 null, bill_trans_bill_amount, p_event_in_rec.p_bill_trans_bill_amount),0)
2065                         ,decode(p_event_in_rec.p_bill_trans_rev_amount, PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM, bill_trans_rev_amount,
2066                                 null, bill_trans_rev_amount, p_event_in_rec.p_bill_trans_rev_amount)
2067                   Into   p_event_in_rec.P_bill_hold_flag
2068                         ,p_event_in_rec.P_adjusting_revenue_flag
2069                         ,p_inv_org_id
2070 			,p_event_in_rec.P_inventory_item_id
2071                         ,P_organization_id
2072 			,p_event_in_rec.P_quantity_billed
2073 			,p_event_in_rec.P_uom_code
2074 			,p_event_in_rec.P_unit_price
2075 			,p_event_in_rec.P_reference1
2076 			,p_event_in_rec.P_reference2
2077                         ,p_event_in_rec.P_reference3
2078                         ,p_event_in_rec.P_reference4
2079                         ,p_event_in_rec.P_reference5
2080                         ,p_event_in_rec.P_reference6
2081                         ,p_event_in_rec.P_reference7
2082                         ,p_event_in_rec.P_reference8
2083                         ,p_event_in_rec.P_reference9
2084                         ,p_event_in_rec.P_reference10
2085 			,p_event_in_rec.P_completion_date
2086 			,p_event_in_rec.P_event_type
2087 			,p_event_in_rec.P_bill_trans_rev_amount
2088 			,p_event_in_rec.P_bill_trans_bill_amount
2089 			,P_task_id
2090 			,p_event_in_rec.P_description
2091 			,l_record_version_number
2092 			,l_bill_trans_bill_amt   /* Added for bug 4093948 */
2093 			,l_bill_trans_rev_amt    /* Added for bug 4093948 */
2094 
2095                   From   pa_events
2096                   Where  event_id=p_event_in_rec.P_event_id;
2097 
2098 		--Unless the user updates with a valid description the
2099 		--description gets defaulted with the event type.
2100                 If (p_event_in_rec.P_description Is NULL
2101 		    OR p_event_in_rec.P_description = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
2102 		Then
2103 			p_event_in_rec.P_description := p_event_in_rec.P_event_type;
2104 		End If;
2105 
2106                 --If event type is of revenue type(Write-Off), setting bill trans bill amt = 0.
2107                 If  l_event_type_classification In('WRITE OFF')
2108                 Then
2109                         p_event_in_rec.P_bill_trans_bill_amount:=0;
2110                 End If;
2111 
2112                 --If event type is of invoice type, set bill trans rev amt = 0
2113                 If l_event_type_classification In('DEFERRED REVENUE','INVOICE REDUCTION','SCHEDULED PAYMENTS')
2114                 Then
2115                         p_event_in_rec.P_bill_trans_rev_amount:=0;
2116                 End If;
2117 
2118                 --If event type = 'Write-On' then bill amt = rev amt.
2119                 If (l_event_type_classification = 'WRITE ON')
2120                 Then
2121                         p_event_in_rec.P_bill_trans_bill_amount := p_event_in_rec.P_bill_trans_rev_amount;
2122                 End If;
2123 
2124           --Log Message
2125           IF l_debug_mode = 'Y' THEN
2126           pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.UPDATE_EVENT.begin'
2127                              ,x_msg         => 'Begin Updating event. '
2128                              ,x_log_level   => 5);
2129           END IF;
2130 
2131            --Get the conversion_type of the funding_rate_type, projfunc_rate_type, project_rate_type  - for Bug3013236
2132               IF p_event_in_rec.p_funding_rate_type is not null
2133               THEN
2134                  SELECT conversion_type
2135                    INTO l_funding_rate_type
2136                    FROM pa_conversion_types_v
2137                   WHERE user_conversion_type = p_event_in_rec.p_funding_rate_type
2138                      or conversion_type = p_event_in_rec.p_funding_rate_type;
2139                  p_event_in_rec.p_funding_rate_type := l_funding_rate_type;
2140               END IF;
2141 
2142               IF p_event_in_rec.p_projfunc_rate_type is not null
2143               THEN
2144                  SELECT conversion_type
2145                    INTO l_projfunc_bil_rate_type
2146                    FROM pa_conversion_types_v
2147                   WHERE user_conversion_type = p_event_in_rec.p_projfunc_rate_type
2148                      or conversion_type = p_event_in_rec.p_projfunc_rate_type;
2149                  p_event_in_rec.p_projfunc_rate_type := l_projfunc_bil_rate_type;
2150               END IF;
2151 
2152               IF p_event_in_rec.p_project_rate_type is not null
2153               THEN
2154                  SELECT conversion_type
2155                    INTO l_project_bil_rate_type
2156                    FROM pa_conversion_types_v
2157                   WHERE user_conversion_type = p_event_in_rec.p_project_rate_type
2158                      or conversion_type = p_event_in_rec.p_project_rate_type;
2159                  p_event_in_rec.p_project_rate_type := l_project_bil_rate_type;
2160               END IF;
2161 
2162            --till here for Bug3013236
2163 
2164  -- Adding code to populate invoice and revenue attributes
2165 
2166     IF l_invproc_currency_code = l_project_currency_code THEN
2167        l_invproc_currency_code := l_project_currency_code;
2168        l_invproc_rate_type     := p_event_in_rec.P_project_rate_type;
2169        l_invproc_rate_date     := p_event_in_rec.P_project_rate_date;
2170        l_invproc_exchange_rate := p_event_in_rec.P_project_exchange_rate;
2171     ELSIF l_invproc_currency_code = l_projfunc_currency_code THEN
2172        l_invproc_currency_code := l_projfunc_currency_code;
2173        l_invproc_rate_type     := p_event_in_rec.P_projfunc_rate_type;
2174        l_invproc_rate_date     := p_event_in_rec.P_projfunc_rate_date;
2175        l_invproc_exchange_rate := p_event_in_rec.P_projfunc_exchange_rate;
2176     ELSE
2177        l_invproc_currency_code := '';
2178        l_invproc_rate_type     := p_event_in_rec.P_funding_rate_type;
2179        l_invproc_rate_date     := p_event_in_rec.P_funding_rate_date;
2180        l_invproc_exchange_rate := p_event_in_rec.P_funding_exchange_rate;
2181 
2182     END IF;
2183 
2184     IF l_revproc_currency_code = l_projfunc_currency_code THEN
2185        l_revproc_currency_code := l_projfunc_currency_code;
2186        l_revproc_rate_type     := p_event_in_rec.P_projfunc_rate_type;
2187        l_revproc_rate_date     := p_event_in_rec.P_projfunc_rate_date;
2188        l_revproc_exchange_rate := p_event_in_rec.P_projfunc_exchange_rate;
2189     END IF;
2190 
2191  -- Till here
2192 
2193    IF nvl(l_record_version_number, 0) <> nvl(p_event_in_rec.P_record_version_number, 0)
2194    Then
2195         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2196         THEN
2197 		pa_interface_utils_pub.map_new_amg_msg
2198 			( p_old_message_code => 'PA_RECORD_CHANGED'
2199 			,p_msg_attribute    => 'CHANGE'
2200 			,p_resize_flag      => 'N'
2201 			,p_msg_context      => 'EVENT'
2202 		      ,p_attribute1       => P_event_in_rec.p_pm_event_reference
2203                         ,p_attribute2       => ''
2204 			,p_attribute3       => ''
2205 			,p_attribute4       => ''
2206 			,p_attribute5       => '');
2207        END IF;
2208                  p_return_status := FND_API.G_RET_STS_ERROR;
2209                  RAISE FND_API.G_EXC_ERROR;
2210    End If;
2211 
2212 /* Code added for Bug 7110782 - starts */
2213 
2214 /* l_event_processed = 'I' means that event has been billed but not revenue distributed.
2215    In this case we are allowing to change only the bill_trans_rev_amount value */
2216 IF l_event_processed = 'I' THEN
2217 
2218 SELECT ev.Task_Id
2219       ,ev.Event_Num
2220       ,ev.Event_Type
2221       ,ev.Bill_Amount
2222       ,ev.Revenue_Amount
2223       ,ev.Revenue_Distributed_Flag
2224       ,ev.Bill_Hold_Flag
2225       ,ev.Completion_date
2226       ,Rev_Dist_Rejection_Code
2227       ,ev.Attribute_Category
2228       ,ev.Attribute1
2229       ,ev.Attribute2
2230       ,ev.Attribute3
2231       ,ev.Attribute4
2232       ,ev.Attribute5
2233       ,ev.Attribute6
2234       ,ev.Attribute7
2235       ,ev.Attribute8
2236       ,ev.Attribute9
2237       ,ev.Attribute10
2238       ,ev.Project_Id
2239       ,ev.Organization_Id
2240       ,ev.Billing_Assignment_Id
2241       ,ev.Event_Num_Reversed
2242       ,ev.Calling_Place
2243       ,ev.Calling_Process
2244       ,ev.Bill_Trans_Currency_Code
2245       ,ev.Bill_Trans_Bill_Amount
2246       ,ev.Project_Currency_Code
2247       ,ev.Project_Rate_Type
2248       ,ev.Project_Rate_Date
2249       ,ev.Project_Exchange_Rate
2250       ,ev.Project_Inv_Rate_Date
2251       ,ev.Project_Inv_Exchange_Rate
2252       ,ev.Project_Bill_Amount
2253       ,ev.Project_Rev_Rate_date
2254       ,ev.Project_Rev_Exchange_Rate
2255       ,ev.Project_Revenue_Amount
2256       ,ev.ProjFunc_Currency_Code
2257       ,ev.ProjFunc_Rate_Type
2258       ,ev.ProjFunc_Rate_date
2259       ,ev.ProjFunc_Exchange_Rate
2260       ,ev.ProjFunc_Inv_Rate_date
2261       ,ev.ProjFunc_Inv_Exchange_Rate
2262       ,ev.ProjFunc_Bill_Amount
2263       ,ev.ProjFunc_Rev_Rate_date
2264       ,ev.Projfunc_Rev_Exchange_Rate
2265       ,ev.ProjFunc_Revenue_Amount
2266       ,ev.Funding_Rate_Type
2267       ,ev.Funding_Rate_date
2268       ,ev.Funding_Exchange_Rate
2269       ,ev.Invproc_Currency_Code
2270       ,ev.Invproc_Rate_Type
2271       ,ev.Invproc_Rate_date
2272       ,ev.Invproc_Exchange_Rate
2273       ,ev.Revproc_Currency_Code
2274       ,ev.Revproc_Rate_Type
2275       ,ev.Revproc_Rate_date
2276       ,ev.Revproc_Exchange_Rate
2277       ,ev.Inv_Gen_Rejection_Code
2278       ,ev.Adjusting_Revenue_Flag
2279       ,ev.inventory_org_id
2280       ,ev.inventory_item_id
2281       ,ev.quantity_billed
2282       ,ev.uom_code
2283       ,ev.unit_price
2284       ,ev.reference1
2285       ,ev.reference2
2286       ,ev.reference3
2287       ,ev.reference4
2288       ,ev.reference5
2289       ,ev.reference6
2290       ,ev.reference7
2291       ,ev.reference8
2292       ,ev.reference9
2293       ,ev.reference10
2294       ,ev.agreement_id
2295 INTO p_task_id
2296     ,p_event_in_rec.p_event_number
2297     ,p_event_in_rec.P_event_type
2298     ,l_bill_amount
2299     ,l_revenue_amount
2300     ,l_revenue_distributed_flag
2301     ,p_event_in_rec.P_bill_hold_flag
2302     ,p_event_in_rec.P_completion_date
2303     ,l_rev_dist_rejection_code
2304     ,p_event_in_rec.P_attribute_category
2305     ,p_event_in_rec.P_attribute1
2306     ,p_event_in_rec.P_attribute2
2307     ,p_event_in_rec.P_attribute3
2308     ,p_event_in_rec.P_attribute4
2309     ,p_event_in_rec.P_attribute5
2310     ,p_event_in_rec.P_attribute6
2311     ,p_event_in_rec.P_attribute7
2312     ,p_event_in_rec.P_attribute8
2313     ,p_event_in_rec.P_attribute9
2314     ,p_event_in_rec.P_attribute10
2315     ,P_project_id
2316     ,P_Organization_Id
2317     ,l_Billing_Assignment_Id
2318     ,l_Event_Num_Reversed
2319     ,l_Calling_Place
2320     ,l_Calling_Process
2321     ,p_event_in_rec.P_bill_trans_currency_code
2322     ,l_Bill_Trans_Bill_Amt
2323     ,l_project_currency_code
2324     ,p_event_in_rec.P_project_rate_type
2325     ,p_event_in_rec.P_project_rate_date
2326     ,p_event_in_rec.P_project_exchange_rate
2327     ,l_ProjFunc_Inv_Rate_date
2328     ,l_Project_Inv_Exchange_Rate
2329     ,l_Project_Bill_Amount
2330     ,l_Project_Rev_Rate_date
2331     ,l_Project_Rev_Exchange_Rate
2332     ,l_Project_Revenue_Amount
2333     ,l_ProjFunc_Currency_Code
2334     ,p_event_in_rec.P_projfunc_rate_type
2335     ,p_event_in_rec.P_projfunc_rate_date
2336     ,p_event_in_rec.P_projfunc_exchange_rate
2337     ,l_ProjFunc_Inv_Rate_date
2338     ,l_ProjFunc_Inv_Exchange_Rate
2339     ,l_ProjFunc_Bill_Amount
2340     ,l_ProjFunc_Rev_Rate_date
2341     ,l_Projfunc_Rev_Exchange_Rate
2342     ,l_ProjFunc_Revenue_Amount
2343     ,p_event_in_rec.P_funding_rate_type
2344     ,p_event_in_rec.P_funding_rate_date
2345     ,p_event_in_rec.P_funding_exchange_rate
2346     ,l_Invproc_Currency_Code
2347     ,l_Invproc_Rate_Type
2348     ,l_Invproc_Rate_date
2349     ,l_Invproc_Exchange_Rate
2350     ,l_Revproc_Currency_Code
2351     ,l_Revproc_Rate_Type
2352     ,l_Revproc_Rate_date
2353     ,l_revproc_exchange_rate
2354     ,l_Inv_Gen_Rejection_Code
2355     ,p_event_in_rec.P_adjusting_revenue_flag
2356     ,p_inv_org_id
2357     ,p_event_in_rec.P_inventory_item_id
2358     ,p_event_in_rec.P_quantity_billed
2359     ,p_event_in_rec.P_uom_code
2360     ,p_event_in_rec.P_unit_price
2361     ,p_event_in_rec.P_reference1
2362     ,p_event_in_rec.P_reference2
2363     ,p_event_in_rec.P_reference3
2364     ,p_event_in_rec.P_reference4
2365     ,p_event_in_rec.P_reference5
2366     ,p_event_in_rec.P_reference6
2367     ,p_event_in_rec.P_reference7
2368     ,p_event_in_rec.P_reference8
2369     ,p_event_in_rec.P_reference9
2370     ,p_event_in_rec.P_reference10
2371     ,P_agreement_id
2372 FROM pa_events ev
2373 WHERE event_id = p_event_in_rec.p_event_id;
2374 
2375 --Added the below call for bug 7513054
2376 l_Bill_Trans_rev_Amt := PA_CURRENCY.ROUND_TRANS_CURRENCY_AMT(l_Bill_Trans_rev_Amt,p_event_in_rec.P_bill_trans_currency_code);
2377 
2378 
2379    PA_EVENTS_PKG.Update_Row
2380 	       (X_Rowid                          	    =>Rowid
2381 	       ,X_Event_Id                      	    =>p_event_in_rec.P_event_id
2382 	       ,X_Task_Id                               =>p_task_id
2383 	       ,X_Event_Num                             =>p_event_in_rec.p_event_number
2384 	       ,X_Last_Update_Date                      =>SYSDATE
2385 	       ,X_Last_Updated_By                       =>G_USER_ID
2386 	       ,X_Last_Update_Login                     =>G_LOGIN_ID
2387 	       ,X_Event_Type                            =>p_event_in_rec.P_event_type
2388 	       ,X_Description                           =>p_event_in_rec.P_description
2389 	       ,X_Bill_Amount                           =>0
2390 	       ,X_Revenue_Amount                        =>0
2391 	       ,X_Revenue_Distributed_Flag              =>'N'
2392 	       ,X_Bill_Hold_Flag                        =>p_event_in_rec.P_bill_hold_flag
2393 	       ,X_Completion_date                       =>p_event_in_rec.P_completion_date
2394 	       ,X_Rev_Dist_Rejection_Code               =>NULL
2395 	       ,X_Attribute_Category                    =>p_event_in_rec.P_attribute_category
2396 	       ,X_Attribute1                            =>p_event_in_rec.P_attribute1
2397 	       ,X_Attribute2                            =>p_event_in_rec.P_attribute2
2398 	       ,X_Attribute3                            =>p_event_in_rec.P_attribute3
2399 	       ,X_Attribute4                            =>p_event_in_rec.P_attribute4
2400 	       ,X_Attribute5                            =>p_event_in_rec.P_attribute5
2401 	       ,X_Attribute6                            =>p_event_in_rec.P_attribute6
2402 	       ,X_Attribute7                            =>p_event_in_rec.P_attribute7
2403 	       ,X_Attribute8                            =>p_event_in_rec.P_attribute8
2404 	       ,X_Attribute9                            =>p_event_in_rec.P_attribute9
2405 	       ,X_Attribute10                           =>p_event_in_rec.P_attribute10
2406 	       ,X_Project_Id                            =>P_project_id
2407 	       ,X_Organization_Id                       =>P_Organization_Id
2408 	       ,X_Billing_Assignment_Id                 =>NULL
2409 	       ,X_Event_Num_Reversed                    =>NULL
2410 	       ,X_Calling_Place                         =>NULL
2411 	       ,X_Calling_Process                       =>NULL
2412 	       ,X_Bill_Trans_Currency_Code              =>p_event_in_rec.P_bill_trans_currency_code
2413 	       ,X_Bill_Trans_Bill_Amount                =>l_Bill_Trans_Bill_Amt
2414 	       ,X_Bill_Trans_rev_Amount                 =>l_Bill_Trans_rev_Amt
2415 	       ,X_Project_Currency_Code                 =>l_project_currency_code
2416 	       ,X_Project_Rate_Type                     =>p_event_in_rec.P_project_rate_type
2417 	       ,X_Project_Rate_Date                     =>p_event_in_rec.P_project_rate_date
2418 	       ,X_Project_Exchange_Rate                 =>p_event_in_rec.P_project_exchange_rate
2419 	       ,X_Project_Inv_Rate_Date                 =>l_ProjFunc_Inv_Rate_date
2420 	       ,X_Project_Inv_Exchange_Rate             =>l_Project_Inv_Exchange_Rate
2421 	       ,X_Project_Bill_Amount                   =>l_Project_Bill_Amount
2422 	       ,X_Project_Rev_Rate_date                 =>l_Project_Rev_Rate_date
2423 	       ,X_Project_Rev_Exchange_Rate             =>l_Project_Rev_Exchange_Rate
2424 	       ,X_Project_Revenue_Amount                =>l_Project_Revenue_Amount
2425 	       ,X_ProjFunc_Currency_Code                =>l_ProjFunc_Currency_Code
2426 	       ,X_ProjFunc_Rate_Type                    =>p_event_in_rec.P_projfunc_rate_type
2427 	       ,X_ProjFunc_Rate_date                    =>p_event_in_rec.P_projfunc_rate_date
2428 	       ,X_ProjFunc_Exchange_Rate                =>p_event_in_rec.P_projfunc_exchange_rate
2429 	       ,X_ProjFunc_Inv_Rate_date                =>l_ProjFunc_Inv_Rate_date
2430 	       ,X_ProjFunc_Inv_Exchange_Rate            =>l_ProjFunc_Inv_Exchange_Rate
2431 	       ,X_ProjFunc_Bill_Amount                  =>l_ProjFunc_Bill_Amount
2432 	       ,X_ProjFunc_Rev_Rate_date                =>l_ProjFunc_Rev_Rate_date
2433 	       ,X_Projfunc_Rev_Exchange_Rate            =>l_Projfunc_Rev_Exchange_Rate
2434 	       ,X_ProjFunc_Revenue_Amount               =>l_ProjFunc_Revenue_Amount
2435 	       ,X_Funding_Rate_Type                     =>p_event_in_rec.P_funding_rate_type
2436 	       ,X_Funding_Rate_date                     =>p_event_in_rec.P_funding_rate_date
2437 	       ,X_Funding_Exchange_Rate                 =>p_event_in_rec.P_funding_exchange_rate
2438 	       ,X_Invproc_Currency_Code                 =>l_Invproc_Currency_Code
2439 	       ,X_Invproc_Rate_Type                     =>l_Invproc_Rate_Type
2440 	       ,X_Invproc_Rate_date                     =>l_Invproc_Rate_date
2441 	       ,X_Invproc_Exchange_Rate                 =>l_Invproc_Exchange_Rate
2442 	       ,X_Revproc_Currency_Code                 =>l_Revproc_Currency_Code
2443 	       ,X_Revproc_Rate_Type                     =>l_Revproc_Rate_Type
2444 	       ,X_Revproc_Rate_date                     =>l_Revproc_Rate_date
2445 	       ,X_Revproc_Exchange_Rate                 =>l_revproc_exchange_rate
2446 	       ,X_Inv_Gen_Rejection_Code                =>l_Inv_Gen_Rejection_Code
2447 	       ,X_Adjusting_Revenue_Flag                =>p_event_in_rec.P_adjusting_revenue_flag
2448 	       ,X_inventory_org_id                      =>p_inv_org_id
2449 	       ,X_inventory_item_id                     =>p_event_in_rec.P_inventory_item_id
2450 		,X_quantity_billed                      =>p_event_in_rec.P_quantity_billed
2451 		,X_uom_code                             =>p_event_in_rec.P_uom_code
2452 		,X_unit_price                           =>p_event_in_rec.P_unit_price
2453 		,X_reference1                           =>p_event_in_rec.P_reference1
2454 		,X_reference2                           =>p_event_in_rec.P_reference2
2455 		,X_reference3                           =>p_event_in_rec.P_reference3
2456 		,X_reference4                           =>p_event_in_rec.P_reference4
2457 		,X_reference5                           =>p_event_in_rec.P_reference5
2458 		,X_reference6                           =>p_event_in_rec.P_reference6
2459 		,X_reference7                           =>p_event_in_rec.P_reference7
2460 		,X_reference8                           =>p_event_in_rec.P_reference8
2461 		,X_reference9                           =>p_event_in_rec.P_reference9
2462 		,X_reference10                          =>p_event_in_rec.P_reference10
2463 		,X_agreement_id				            =>P_agreement_id );
2464 
2465 /* l_event_processed = 'R' means that event has been revenue distributed but not billed.
2466    In this case we are allowing to change only the bill_trans_bill_amount and bill_hold_flga values */
2467 ELSIF l_event_processed = 'R' THEN
2468 
2469 SELECT ev.Task_Id
2470       ,ev.Event_Num
2471       ,ev.Event_Type
2472       ,ev.Bill_Amount
2473       ,ev.Revenue_Amount
2474       ,ev.Revenue_Distributed_Flag
2475       ,ev.Completion_date
2476       ,Rev_Dist_Rejection_Code
2477       ,ev.Attribute_Category
2478       ,ev.Attribute1
2479       ,ev.Attribute2
2480       ,ev.Attribute3
2481       ,ev.Attribute4
2482       ,ev.Attribute5
2483       ,ev.Attribute6
2484       ,ev.Attribute7
2485       ,ev.Attribute8
2486       ,ev.Attribute9
2487       ,ev.Attribute10
2488       ,ev.Project_Id
2489       ,ev.Organization_Id
2490       ,ev.Billing_Assignment_Id
2491       ,ev.Event_Num_Reversed
2492       ,ev.Calling_Place
2493       ,ev.Calling_Process
2494       ,ev.Bill_Trans_Currency_Code
2495       ,ev.Bill_Trans_rev_Amount
2496       ,ev.Project_Currency_Code
2497       ,ev.Project_Rate_Type
2498       ,ev.Project_Rate_Date
2499       ,ev.Project_Exchange_Rate
2500       ,ev.Project_Inv_Rate_Date
2501       ,ev.Project_Inv_Exchange_Rate
2502       ,ev.Project_Bill_Amount
2503       ,ev.Project_Rev_Rate_date
2504       ,ev.Project_Rev_Exchange_Rate
2505       ,ev.Project_Revenue_Amount
2506       ,ev.ProjFunc_Currency_Code
2507       ,ev.ProjFunc_Rate_Type
2508       ,ev.ProjFunc_Rate_date
2509       ,ev.ProjFunc_Exchange_Rate
2510       ,ev.ProjFunc_Inv_Rate_date
2511       ,ev.ProjFunc_Inv_Exchange_Rate
2512       ,ev.ProjFunc_Bill_Amount
2513       ,ev.ProjFunc_Rev_Rate_date
2514       ,ev.Projfunc_Rev_Exchange_Rate
2515       ,ev.ProjFunc_Revenue_Amount
2516       ,ev.Funding_Rate_Type
2517       ,ev.Funding_Rate_date
2518       ,ev.Funding_Exchange_Rate
2519       ,ev.Invproc_Currency_Code
2520       ,ev.Invproc_Rate_Type
2521       ,ev.Invproc_Rate_date
2522       ,ev.Invproc_Exchange_Rate
2523       ,ev.Revproc_Currency_Code
2524       ,ev.Revproc_Rate_Type
2525       ,ev.Revproc_Rate_date
2526       ,ev.Revproc_Exchange_Rate
2527       ,ev.Inv_Gen_Rejection_Code
2528       ,ev.Adjusting_Revenue_Flag
2529       ,ev.inventory_org_id
2530       ,ev.inventory_item_id
2531       ,ev.quantity_billed
2532       ,ev.uom_code
2533       ,ev.unit_price
2534       ,ev.reference1
2535       ,ev.reference2
2536       ,ev.reference3
2537       ,ev.reference4
2538       ,ev.reference5
2539       ,ev.reference6
2540       ,ev.reference7
2541       ,ev.reference8
2542       ,ev.reference9
2543       ,ev.reference10
2544       ,ev.agreement_id
2545 INTO p_task_id
2546     ,p_event_in_rec.p_event_number
2547     ,p_event_in_rec.P_event_type
2548     ,l_bill_amount
2549     ,l_revenue_amount
2550     ,l_revenue_distributed_flag
2551     ,p_event_in_rec.P_completion_date
2552     ,l_rev_dist_rejection_code
2553     ,p_event_in_rec.P_attribute_category
2554     ,p_event_in_rec.P_attribute1
2555     ,p_event_in_rec.P_attribute2
2556     ,p_event_in_rec.P_attribute3
2557     ,p_event_in_rec.P_attribute4
2558     ,p_event_in_rec.P_attribute5
2559     ,p_event_in_rec.P_attribute6
2560     ,p_event_in_rec.P_attribute7
2561     ,p_event_in_rec.P_attribute8
2562     ,p_event_in_rec.P_attribute9
2563     ,p_event_in_rec.P_attribute10
2564     ,P_project_id
2565     ,P_Organization_Id
2566     ,l_Billing_Assignment_Id
2567     ,l_Event_Num_Reversed
2568     ,l_Calling_Place
2569     ,l_Calling_Process
2570     ,p_event_in_rec.P_bill_trans_currency_code
2571     ,l_Bill_Trans_rev_Amt
2572     ,l_project_currency_code
2573     ,p_event_in_rec.P_project_rate_type
2574     ,p_event_in_rec.P_project_rate_date
2575     ,p_event_in_rec.P_project_exchange_rate
2576     ,l_ProjFunc_Inv_Rate_date
2577     ,l_Project_Inv_Exchange_Rate
2578     ,l_Project_Bill_Amount
2579     ,l_Project_Rev_Rate_date
2580     ,l_Project_Rev_Exchange_Rate
2581     ,l_Project_Revenue_Amount
2582     ,l_ProjFunc_Currency_Code
2583     ,p_event_in_rec.P_projfunc_rate_type
2584     ,p_event_in_rec.P_projfunc_rate_date
2585     ,p_event_in_rec.P_projfunc_exchange_rate
2586     ,l_ProjFunc_Inv_Rate_date
2587     ,l_ProjFunc_Inv_Exchange_Rate
2588     ,l_ProjFunc_Bill_Amount
2589     ,l_ProjFunc_Rev_Rate_date
2590     ,l_Projfunc_Rev_Exchange_Rate
2591     ,l_ProjFunc_Revenue_Amount
2592     ,p_event_in_rec.P_funding_rate_type
2593     ,p_event_in_rec.P_funding_rate_date
2594     ,p_event_in_rec.P_funding_exchange_rate
2595     ,l_Invproc_Currency_Code
2596     ,l_Invproc_Rate_Type
2597     ,l_Invproc_Rate_date
2598     ,l_Invproc_Exchange_Rate
2599     ,l_Revproc_Currency_Code
2600     ,l_Revproc_Rate_Type
2601     ,l_Revproc_Rate_date
2602     ,l_revproc_exchange_rate
2603     ,l_Inv_Gen_Rejection_Code
2604     ,p_event_in_rec.P_adjusting_revenue_flag
2605     ,p_inv_org_id
2606     ,p_event_in_rec.P_inventory_item_id
2607     ,p_event_in_rec.P_quantity_billed
2608     ,p_event_in_rec.P_uom_code
2609     ,p_event_in_rec.P_unit_price
2610     ,p_event_in_rec.P_reference1
2611     ,p_event_in_rec.P_reference2
2612     ,p_event_in_rec.P_reference3
2613     ,p_event_in_rec.P_reference4
2614     ,p_event_in_rec.P_reference5
2615     ,p_event_in_rec.P_reference6
2616     ,p_event_in_rec.P_reference7
2617     ,p_event_in_rec.P_reference8
2618     ,p_event_in_rec.P_reference9
2619     ,p_event_in_rec.P_reference10
2620     ,P_agreement_id
2621 FROM pa_events ev
2622 WHERE event_id = p_event_in_rec.p_event_id;
2623 
2624 --Added the below call for bug 7513054
2625 l_Bill_Trans_Bill_Amt := PA_CURRENCY.ROUND_TRANS_CURRENCY_AMT(l_Bill_Trans_Bill_Amt,p_event_in_rec.P_bill_trans_currency_code);
2626 
2627 
2628      PA_EVENTS_PKG.Update_Row
2629 	       (X_Rowid                          	=>Rowid
2630 	       ,X_Event_Id                      	=>p_event_in_rec.P_event_id
2631 	       ,X_Task_Id                               =>p_task_id
2632 	       ,X_Event_Num                             =>p_event_in_rec.p_event_number
2633 	       ,X_Last_Update_Date                      =>SYSDATE
2634 	       ,X_Last_Updated_By                       =>G_USER_ID
2635 	       ,X_Last_Update_Login                     =>G_LOGIN_ID
2636 	       ,X_Event_Type                            =>p_event_in_rec.P_event_type
2637 	       ,X_Description                           =>p_event_in_rec.P_description
2638 	       ,X_Bill_Amount                           =>0
2639 	       ,X_Revenue_Amount                        =>0
2640 	       ,X_Revenue_Distributed_Flag              =>'N'
2641 	       ,X_Bill_Hold_Flag                        =>p_event_in_rec.P_bill_hold_flag
2642 	       ,X_Completion_date                       =>p_event_in_rec.P_completion_date
2643 	       ,X_Rev_Dist_Rejection_Code               =>NULL
2644 	       ,X_Attribute_Category                    =>p_event_in_rec.P_attribute_category
2645 	       ,X_Attribute1                            =>p_event_in_rec.P_attribute1
2646 	       ,X_Attribute2                            =>p_event_in_rec.P_attribute2
2647 	       ,X_Attribute3                            =>p_event_in_rec.P_attribute3
2648 	       ,X_Attribute4                            =>p_event_in_rec.P_attribute4
2649 	       ,X_Attribute5                            =>p_event_in_rec.P_attribute5
2650 	       ,X_Attribute6                            =>p_event_in_rec.P_attribute6
2651 	       ,X_Attribute7                            =>p_event_in_rec.P_attribute7
2652 	       ,X_Attribute8                            =>p_event_in_rec.P_attribute8
2653 	       ,X_Attribute9                            =>p_event_in_rec.P_attribute9
2654 	       ,X_Attribute10                           =>p_event_in_rec.P_attribute10
2655 	       ,X_Project_Id                            =>P_project_id
2656 	       ,X_Organization_Id                       =>P_Organization_Id
2657 	       ,X_Billing_Assignment_Id                 =>NULL
2658 	       ,X_Event_Num_Reversed                    =>NULL
2659 	       ,X_Calling_Place                         =>NULL
2660 	       ,X_Calling_Process                       =>NULL
2661 	       ,X_Bill_Trans_Currency_Code              =>p_event_in_rec.P_bill_trans_currency_code
2662 	       ,X_Bill_Trans_Bill_Amount                =>l_Bill_Trans_Bill_Amt
2663 	       ,X_Bill_Trans_rev_Amount                 =>l_Bill_Trans_rev_Amt
2664 	       ,X_Project_Currency_Code                 =>l_project_currency_code
2665 	       ,X_Project_Rate_Type                     =>p_event_in_rec.P_project_rate_type
2666 	       ,X_Project_Rate_Date                     =>p_event_in_rec.P_project_rate_date
2667 	       ,X_Project_Exchange_Rate                 =>p_event_in_rec.P_project_exchange_rate
2668 	       ,X_Project_Inv_Rate_Date                 =>l_ProjFunc_Inv_Rate_date
2669 	       ,X_Project_Inv_Exchange_Rate             =>l_Project_Inv_Exchange_Rate
2670 	       ,X_Project_Bill_Amount                   =>l_Project_Bill_Amount
2671 	       ,X_Project_Rev_Rate_date                 =>l_Project_Rev_Rate_date
2672 	       ,X_Project_Rev_Exchange_Rate             =>l_Project_Rev_Exchange_Rate
2673 	       ,X_Project_Revenue_Amount                =>l_Project_Revenue_Amount
2674 	       ,X_ProjFunc_Currency_Code                =>l_ProjFunc_Currency_Code
2675 	       ,X_ProjFunc_Rate_Type                    =>p_event_in_rec.P_projfunc_rate_type
2676 	       ,X_ProjFunc_Rate_date                    =>p_event_in_rec.P_projfunc_rate_date
2677 	       ,X_ProjFunc_Exchange_Rate                =>p_event_in_rec.P_projfunc_exchange_rate
2678 	       ,X_ProjFunc_Inv_Rate_date                =>l_ProjFunc_Inv_Rate_date
2679 	       ,X_ProjFunc_Inv_Exchange_Rate            =>l_ProjFunc_Inv_Exchange_Rate
2680 	       ,X_ProjFunc_Bill_Amount                  =>l_ProjFunc_Bill_Amount
2681 	       ,X_ProjFunc_Rev_Rate_date                =>l_ProjFunc_Rev_Rate_date
2682 	       ,X_Projfunc_Rev_Exchange_Rate            =>l_Projfunc_Rev_Exchange_Rate
2683 	       ,X_ProjFunc_Revenue_Amount               =>l_ProjFunc_Revenue_Amount
2684 	       ,X_Funding_Rate_Type                     =>p_event_in_rec.P_funding_rate_type
2685 	       ,X_Funding_Rate_date                     =>p_event_in_rec.P_funding_rate_date
2686 	       ,X_Funding_Exchange_Rate                 =>p_event_in_rec.P_funding_exchange_rate
2687 	       ,X_Invproc_Currency_Code                 =>l_Invproc_Currency_Code
2688 	       ,X_Invproc_Rate_Type                     =>l_Invproc_Rate_Type
2689 	       ,X_Invproc_Rate_date                     =>l_Invproc_Rate_date
2690 	       ,X_Invproc_Exchange_Rate                 =>l_Invproc_Exchange_Rate
2691 	       ,X_Revproc_Currency_Code                 =>l_Revproc_Currency_Code
2692 	       ,X_Revproc_Rate_Type                     =>l_Revproc_Rate_Type
2693 	       ,X_Revproc_Rate_date                     =>l_Revproc_Rate_date
2694 	       ,X_Revproc_Exchange_Rate                 =>l_revproc_exchange_rate
2695 	       ,X_Inv_Gen_Rejection_Code                =>l_Inv_Gen_Rejection_Code
2696 	       ,X_Adjusting_Revenue_Flag                =>p_event_in_rec.P_adjusting_revenue_flag
2697 	       ,X_inventory_org_id                      =>p_inv_org_id
2698 	       ,X_inventory_item_id                     =>p_event_in_rec.P_inventory_item_id
2699 		,X_quantity_billed                      =>p_event_in_rec.P_quantity_billed
2700 		,X_uom_code                             =>p_event_in_rec.P_uom_code
2701 		,X_unit_price                           =>p_event_in_rec.P_unit_price
2702 		,X_reference1                           =>p_event_in_rec.P_reference1
2703 		,X_reference2                           =>p_event_in_rec.P_reference2
2704 		,X_reference3                           =>p_event_in_rec.P_reference3
2705 		,X_reference4                           =>p_event_in_rec.P_reference4
2706 		,X_reference5                           =>p_event_in_rec.P_reference5
2707 		,X_reference6                           =>p_event_in_rec.P_reference6
2708 		,X_reference7                           =>p_event_in_rec.P_reference7
2709 		,X_reference8                           =>p_event_in_rec.P_reference8
2710 		,X_reference9                           =>p_event_in_rec.P_reference9
2711 		,X_reference10                          =>p_event_in_rec.P_reference10
2712 		,X_agreement_id				            =>P_agreement_id );
2713 
2714 /* Code added for Bug 7110782 - ends */
2715 
2716 ELSE
2717 
2718 --Added below calls for bug 7513054
2719 l_Bill_Trans_rev_Amt  := PA_CURRENCY.ROUND_TRANS_CURRENCY_AMT(l_Bill_Trans_rev_Amt, p_event_in_rec.P_bill_trans_currency_code);
2720 l_Bill_Trans_Bill_Amt := PA_CURRENCY.ROUND_TRANS_CURRENCY_AMT(l_Bill_Trans_Bill_Amt,p_event_in_rec.P_bill_trans_currency_code);
2721 
2722 
2723 	   --Calls table handler for updating valid events.
2724 	      PA_EVENTS_PKG.Update_Row
2725 	       (X_Rowid                          	=>Rowid
2726 	       ,X_Event_Id                      	=>p_event_in_rec.P_event_id
2727 	       ,X_Task_Id                               =>p_task_id
2728 	       ,X_Event_Num                             =>p_event_in_rec.p_event_number
2729 	       ,X_Last_Update_Date                      =>SYSDATE
2730 	       ,X_Last_Updated_By                       =>G_USER_ID
2731 	       ,X_Last_Update_Login                     =>G_LOGIN_ID
2732 	       ,X_Event_Type                            =>p_event_in_rec.P_event_type
2733 	       ,X_Description                           =>p_event_in_rec.P_description
2734 	       ,X_Bill_Amount                           =>0
2735 	       ,X_Revenue_Amount                        =>0
2736 	       ,X_Revenue_Distributed_Flag              =>'N'
2737 	       ,X_Bill_Hold_Flag                        =>p_event_in_rec.P_bill_hold_flag
2738 	       ,X_Completion_date                       =>p_event_in_rec.P_completion_date
2739 	       ,X_Rev_Dist_Rejection_Code               =>NULL
2740 	       ,X_Attribute_Category                    =>p_event_in_rec.P_attribute_category
2741 	       ,X_Attribute1                            =>p_event_in_rec.P_attribute1
2742 	       ,X_Attribute2                            =>p_event_in_rec.P_attribute2
2743 	       ,X_Attribute3                            =>p_event_in_rec.P_attribute3
2744 	       ,X_Attribute4                            =>p_event_in_rec.P_attribute4
2745 	       ,X_Attribute5                            =>p_event_in_rec.P_attribute5
2746 	       ,X_Attribute6                            =>p_event_in_rec.P_attribute6
2747 	       ,X_Attribute7                            =>p_event_in_rec.P_attribute7
2748 	       ,X_Attribute8                            =>p_event_in_rec.P_attribute8
2749 	       ,X_Attribute9                            =>p_event_in_rec.P_attribute9
2750 	       ,X_Attribute10                           =>p_event_in_rec.P_attribute10
2751 	       ,X_Project_Id                            =>P_project_id
2752 	       ,X_Organization_Id                       =>P_Organization_Id
2753 	       ,X_Billing_Assignment_Id                 =>NULL
2754 	       ,X_Event_Num_Reversed                    =>NULL
2755 	       ,X_Calling_Place                         =>NULL
2756 	       ,X_Calling_Process                       =>NULL
2757 	       ,X_Bill_Trans_Currency_Code              =>p_event_in_rec.P_bill_trans_currency_code
2758 	       ,X_Bill_Trans_Bill_Amount                =>l_Bill_Trans_Bill_Amt
2759 	       ,X_Bill_Trans_rev_Amount                 =>l_Bill_Trans_rev_Amt
2760 	       ,X_Project_Currency_Code                 =>l_project_currency_code
2761 	       ,X_Project_Rate_Type                     =>p_event_in_rec.P_project_rate_type
2762 	       ,X_Project_Rate_Date                     =>p_event_in_rec.P_project_rate_date
2763 	       ,X_Project_Exchange_Rate                 =>p_event_in_rec.P_project_exchange_rate
2764 	       ,X_Project_Inv_Rate_Date                 =>l_ProjFunc_Inv_Rate_date
2765 	       ,X_Project_Inv_Exchange_Rate             =>l_Project_Inv_Exchange_Rate
2766 	       ,X_Project_Bill_Amount                   =>l_Project_Bill_Amount
2767 	       ,X_Project_Rev_Rate_date                 =>l_Project_Rev_Rate_date
2768 	       ,X_Project_Rev_Exchange_Rate             =>l_Project_Rev_Exchange_Rate
2769 	       ,X_Project_Revenue_Amount                =>l_Project_Revenue_Amount
2770 	       ,X_ProjFunc_Currency_Code                =>l_ProjFunc_Currency_Code
2771 	       ,X_ProjFunc_Rate_Type                    =>p_event_in_rec.P_projfunc_rate_type
2772 	       ,X_ProjFunc_Rate_date                    =>p_event_in_rec.P_projfunc_rate_date
2773 	       ,X_ProjFunc_Exchange_Rate                =>p_event_in_rec.P_projfunc_exchange_rate
2774 	       ,X_ProjFunc_Inv_Rate_date                =>l_ProjFunc_Inv_Rate_date
2775 	       ,X_ProjFunc_Inv_Exchange_Rate            =>l_ProjFunc_Inv_Exchange_Rate
2776 	       ,X_ProjFunc_Bill_Amount                  =>l_ProjFunc_Bill_Amount
2777 	       ,X_ProjFunc_Rev_Rate_date                =>l_ProjFunc_Rev_Rate_date
2778 	       ,X_Projfunc_Rev_Exchange_Rate            =>l_Projfunc_Rev_Exchange_Rate
2779 	       ,X_ProjFunc_Revenue_Amount               =>l_ProjFunc_Revenue_Amount
2780 	       ,X_Funding_Rate_Type                     =>p_event_in_rec.P_funding_rate_type
2781 	       ,X_Funding_Rate_date                     =>p_event_in_rec.P_funding_rate_date
2782 	       ,X_Funding_Exchange_Rate                 =>p_event_in_rec.P_funding_exchange_rate
2783 	       ,X_Invproc_Currency_Code                 =>l_Invproc_Currency_Code
2784 	       ,X_Invproc_Rate_Type                     =>l_Invproc_Rate_Type
2785 	       ,X_Invproc_Rate_date                     =>l_Invproc_Rate_date
2786 	       ,X_Invproc_Exchange_Rate                 =>l_Invproc_Exchange_Rate
2787 	       ,X_Revproc_Currency_Code                 =>l_Revproc_Currency_Code
2788 	       ,X_Revproc_Rate_Type                     =>l_Revproc_Rate_Type
2789 	       ,X_Revproc_Rate_date                     =>l_Revproc_Rate_date
2790 	       ,X_Revproc_Exchange_Rate                 =>l_revproc_exchange_rate
2791 	       ,X_Inv_Gen_Rejection_Code                =>l_Inv_Gen_Rejection_Code
2792 	       ,X_Adjusting_Revenue_Flag                =>p_event_in_rec.P_adjusting_revenue_flag
2793 	       ,X_inventory_org_id                      =>p_inv_org_id
2794 	       ,X_inventory_item_id                     =>p_event_in_rec.P_inventory_item_id
2795 		,X_quantity_billed                      =>p_event_in_rec.P_quantity_billed
2796 		,X_uom_code                             =>p_event_in_rec.P_uom_code
2797 		,X_unit_price                           =>p_event_in_rec.P_unit_price
2798 		,X_reference1                           =>p_event_in_rec.P_reference1
2799 		,X_reference2                           =>p_event_in_rec.P_reference2
2800 		,X_reference3                           =>p_event_in_rec.P_reference3
2801 		,X_reference4                           =>p_event_in_rec.P_reference4
2802 		,X_reference5                           =>p_event_in_rec.P_reference5
2803 		,X_reference6                           =>p_event_in_rec.P_reference6
2804 		,X_reference7                           =>p_event_in_rec.P_reference7
2805 		,X_reference8                           =>p_event_in_rec.P_reference8
2806 		,X_reference9                           =>p_event_in_rec.P_reference9
2807 		,X_reference10                          =>p_event_in_rec.P_reference10
2808                 ,X_agreement_id				=>P_agreement_id );  -- Federal Uptake
2809 
2810 END IF; /* Added for Bug 7110782 */
2811 
2812         --If commit is set to true then commit to database.
2813             IF FND_API.to_boolean( p_commit )
2814             THEN
2815                 COMMIT;
2816             END IF;
2817 
2818 	EXCEPTION
2819 		WHEN FND_API.G_EXC_ERROR
2820 			THEN
2821 			ROLLBACK TO Update_event;
2822 			l_return_status := FND_API.G_RET_STS_ERROR;
2823 
2824 		WHEN FND_API.G_EXC_UNEXPECTED_ERROR
2825 			THEN
2826 			ROLLBACK TO Update_event;
2827 			l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2828 
2829                 WHEN pa_event_pvt.pub_excp
2830                         THEN
2831                         ROLLBACK TO Update_event;
2832 			l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2833 			PA_EVENT_PUB.PACKAGE_NAME
2834 			:='(event_reference='||p_event_in_rec.p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
2835 			PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||'UPDATE_EVENT';
2836 
2837 			IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2838 			THEN
2839 				FND_MSG_PUB.add_exc_msg
2840 				       ( p_pkg_name            => PACKAGE_NAME
2841 				       , p_procedure_name      => PROCEDURE_NAME );
2842 			PACKAGE_NAME:=NULL;
2843 			PROCEDURE_NAME:=NULL;
2844 			END IF;
2845 
2846 		WHEN OTHERS
2847 			THEN
2848 			l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2849 			ROLLBACK TO Update_event;
2850 			PA_EVENT_PUB.PACKAGE_NAME
2851 			:='(event_reference='||p_event_in_rec.p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
2852 			PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'UPDATE_EVENT';
2853 
2854 			IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2855 			THEN
2856 				FND_MSG_PUB.add_exc_msg
2857 				       ( p_pkg_name            => PACKAGE_NAME
2858 				       , p_procedure_name      => PROCEDURE_NAME );
2859 			PACKAGE_NAME:=NULL;
2860 			PROCEDURE_NAME:=NULL;
2861 			END IF;
2862 
2863      END;         --end of Inner Block
2864 
2865    --Populating the output table
2866    tot_out_rec := tot_out_rec + 1;     -- Added for bug#12964074
2867    p_event_out_tbl(tot_out_rec).pm_event_reference := p_event_in_rec.p_pm_event_reference;
2868    p_event_out_tbl(tot_out_rec).Event_Id           := p_event_in_rec.P_event_id;
2869    p_event_out_tbl(tot_out_rec).Return_status      := P_return_status;
2870   -- tot_out_rec := tot_out_rec + 1;   -- Commented for bug#12964074
2871    tot_in_rec := p_event_in_tbl.next(tot_in_rec);
2872 
2873    pa_debug.reset_err_stack; -- Reset error stack
2874 
2875    END LOOP;     --End of loop
2876 
2877    --Setting the return status to false even if one record fails the validation.
2878    p_return_status := l_return_status;
2879 
2880    --If there is one error message then extract the error meaasge and return it.
2881    FND_MSG_PUB.Count_And_Get
2882 	( p_encoded           =>      l_encoded
2883 	 ,p_count             =>      p_msg_count
2884 	 ,p_data              =>      p_msg_data      );
2885 
2886 EXCEPTION
2887         WHEN FND_API.G_EXC_ERROR
2888            THEN
2889                 p_return_status := FND_API.G_RET_STS_ERROR;
2890                 FND_MSG_PUB.Count_And_Get
2891                         ( p_encoded           =>      l_encoded
2892                          ,p_count             =>      p_msg_count
2893                          ,p_data              =>      p_msg_data      );
2894 
2895         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
2896            THEN
2897                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2898                 FND_MSG_PUB.Count_And_Get
2899                         ( p_encoded           =>      l_encoded
2900                          ,p_count             =>      p_msg_count
2901                          ,p_data              =>      p_msg_data      );
2902 
2903         WHEN pa_event_pvt.pub_excp
2904            THEN
2905                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2906                 PA_EVENT_PUB.PACKAGE_NAME
2907                 :='(event_reference='||p_event_in_rec.p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
2908                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||'UPDATE_EVENT';
2909 
2910                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2911                 THEN
2912                         FND_MSG_PUB.add_exc_msg
2913                                ( p_pkg_name            => PACKAGE_NAME
2914                                , p_procedure_name      => PROCEDURE_NAME );
2915                 PACKAGE_NAME:=NULL;
2916                 PROCEDURE_NAME:=NULL;
2917                 END IF;
2918                 FND_MSG_PUB.Count_And_Get
2919                         ( p_encoded           =>      l_encoded
2920                          ,p_count             =>      p_msg_count
2921                          ,p_data              =>      p_msg_data      );
2922 
2923         WHEN OTHERS
2924            THEN
2925                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2926 
2927                 PA_EVENT_PUB.PACKAGE_NAME
2928                 :='(event_reference='||p_event_in_rec.p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
2929                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'UPDATE_EVENT';
2930 
2931                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2932                 THEN
2933                         FND_MSG_PUB.add_exc_msg
2934                                ( p_pkg_name            => PACKAGE_NAME
2935                                , p_procedure_name      => PROCEDURE_NAME );
2936                 PACKAGE_NAME:=NULL;
2937                 PROCEDURE_NAME:=NULL;
2938                 END IF;
2939 
2940                 FND_MSG_PUB.Count_And_Get
2941                         ( p_encoded           =>      l_encoded
2942                          ,p_count             =>      p_msg_count
2943                          ,p_data              =>      p_msg_data      );
2944 
2945  END UPDATE_EVENT;
2946 
2947 -- ============================================================================
2948 --
2949 --Name:               delete_event
2950 --Type:               procedure
2951 --Description: This API deletes an existing event or a set of existing events
2952 --
2953 --Called subprograms:
2954 --Called subprograms: PA_EVENT_PVT.CHECK_MDTY_PARAMS1
2955 --                    PA_EVENT_PVT.CHECK_MDTY_PARAMS2
2956 --                    PA_EVENT_PVT.CHECK_DELETE_EVENT_OK
2957 --                    PA_EVENTS_PKG.DELETE_ROW
2958 --
2959 --
2960 --
2961 --History:
2962 
2963 -- ============================================================================
2964 PROCEDURE DELETE_EVENT
2965 (p_api_version_number	IN	NUMBER
2966 ,p_commit		IN	VARCHAR2
2967 ,p_init_msg_list	IN	VARCHAR2
2968 ,p_pm_product_code	IN	VARCHAR2
2969 ,p_pm_event_reference  	IN	VARCHAR2
2970 ,p_event_id		IN	NUMBER
2971 ,p_msg_count            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
2972 ,p_msg_data             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2973 ,p_return_status        OUT     NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
2974 AS
2975 
2976 p_api_name                      VARCHAR2(100):='DELETE_EVENT';
2977 P_rowid				VARCHAR2(18);
2978 l_event_id_out			NUMBER:=NULL;
2979 l_encoded			VARCHAR2(1):='F';
2980 l_pm_event_reference            VARCHAR2(25);
2981 BEGIN
2982 
2983   -- Initialize the Error Stack
2984   pa_debug.set_err_stack('PA_EVENT_PUB.DELETE_EVENT');
2985 
2986   --Log Message
2987   IF l_debug_mode = 'Y' THEN
2988   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.DELETE_EVENT.begin'
2989                      ,x_msg         => 'Beginning of Delete Event'
2990                      ,x_log_level   => 5);
2991   END IF;
2992 
2993 
2994    --Seting Savepoint
2995    Savepoint delete_event;
2996       p_msg_count := 0;
2997       p_return_status := FND_API.G_RET_STS_SUCCESS;
2998   --Log Message
2999   IF l_debug_mode = 'Y' THEN
3000   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.DELETE_EVENT.begin'
3001                      ,x_msg         => 'Calling  mandatory input parameters-1'
3002                      ,x_log_level   => 5);
3003   END IF;
3004 
3005    ---Validating mandatory input parameters-1
3006 
3007    PA_EVENT_PVT.CHECK_MDTY_PARAMS1
3008     ( p_api_version_number             =>p_api_version_number
3009      ,p_api_name                       =>p_api_name
3010      ,p_pm_product_code                =>p_pm_product_code
3011      ,p_function_name                  =>'PA_EV_DELETE_EVENT'
3012      ,x_return_status                  =>p_return_status
3013      ,x_msg_count                      =>p_msg_count
3014      ,x_msg_data                       =>p_msg_data );
3015 
3016 	   If p_return_status <> FND_API.G_RET_STS_SUCCESS
3017 	   Then
3018 		IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR
3019 		THEN
3020 				RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3021 
3022 		ELSIF p_return_status = FND_API.G_RET_STS_ERROR
3023 		THEN
3024                         RAISE FND_API.G_EXC_ERROR;
3025 		END IF;
3026 	   End If;
3027 
3028           --Log Message
3029    IF l_debug_mode = 'Y' THEN
3030 	  pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.DELETE_EVENT.begin'
3031                              ,x_msg         => ' Calling mandatory input parameters-2'
3032                              ,x_log_level   => 5);
3033    END IF;
3034 
3035    -- Validating mandatory input parameters-2
3036 /*Commenting out this call as the event reference is not a mandatory parameter.bug 3118781
3037    PA_EVENT_PVT.CHECK_MDTY_PARAMS2
3038    (  p_pm_event_reference    => p_pm_event_reference
3039      ,p_pm_product_code       => p_pm_product_code
3040      ,p_project_number        => NULL
3041      ,p_event_type            => NULL
3042      ,p_organization_name     => NULL
3043      ,p_calling_place         => 'DELETE_EVENT'
3044      ,x_return_status         => p_return_status );
3045 
3046 	   If p_return_status <> FND_API.G_RET_STS_SUCCESS
3047 	   Then
3048 		IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR
3049 		THEN
3050 				RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3051 
3052 		ELSIF p_return_status = FND_API.G_RET_STS_ERROR
3053 		THEN
3054 				RAISE FND_API.G_EXC_ERROR;
3055 		END IF;
3056 	   End If;
3057 End of comment for 3118781 */
3058   --Log Message
3059   IF l_debug_mode = 'Y' THEN
3060   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.DELETE_EVENT.begin'
3061 		     ,x_msg         => 'Calling conv_event_ref_to_id'
3062 		     ,x_log_level   => 5);
3063   END IF;
3064    l_pm_event_reference :=p_pm_event_reference;
3065    l_event_id_out:=p_event_id;
3066    --Validation of event_id or pm_event_reference and conversion to event_id
3067 
3068     If PA_EVENT_PVT.CONV_EVENT_REF_TO_ID
3069           (P_pm_product_code      =>P_pm_product_code
3070           ,P_pm_event_reference   =>l_pm_event_reference
3071           ,P_event_id             =>l_event_id_out)
3072           ='N'
3073     Then
3074           p_return_status             := FND_API.G_RET_STS_ERROR;
3075           RAISE FND_API.G_EXC_ERROR;
3076     End If;
3077 
3078   --Log Message
3079   IF l_debug_mode = 'Y' THEN
3080   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.DELETE_EVENT.begin'
3081 		     ,x_msg         => 'Calling check_delete_event_ok'
3082 		     ,x_log_level   => 5);
3083   END IF;
3084 
3085    -- Calling check_delete_event_ok in pa_event_pvt package
3086 
3087    If PA_EVENT_PVT.CHECK_DELETE_EVENT_OK
3088 	(P_pm_event_reference	=>l_pm_event_reference
3089 	,P_event_id		=>l_event_id_out) ='N'
3090    Then
3091         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
3092         THEN
3093                 pa_interface_utils_pub.map_new_amg_msg
3094                         ( p_old_message_code => 'PA_TK_EVENT_IN_USE'
3095                         ,p_msg_attribute    => 'CHANGE'
3096                         ,p_resize_flag      => 'N'
3097                         ,p_msg_context      => 'EVENT'
3098                         ,p_attribute1       => l_pm_event_reference
3099                         ,p_attribute2       => ''
3100                         ,p_attribute3       => ''
3101                         ,p_attribute4       => ''
3102                         ,p_attribute5       => '');
3103          END IF;
3104          p_return_status := FND_API.G_RET_STS_ERROR;
3105          RAISE FND_API.G_EXC_ERROR;
3106 
3107    End If;
3108 
3109 
3110   --If validation is successful then delete the event from PA_EVENTS
3111 
3112 --Populating the rowid
3113           Select Rowid
3114           Into p_rowid
3115           From pa_events
3116           Where event_id=l_event_id_out;
3117 
3118 
3119   --Log Message
3120   IF l_debug_mode = 'Y' THEN
3121   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.DELETE_EVENT.begin'
3122 		     ,x_msg         => 'Calling table handler to delete event'
3123 		     ,x_log_level   => 5);
3124   END IF;
3125 
3126   --calling PROCEDURE Delete_Row to delete the event
3127 
3128 
3129   PA_EVENTS_PKG.Delete_Row(X_Rowid  =>  P_rowid);
3130 
3131   --If commit is set to true then commit to database.
3132     IF FND_API.to_boolean( p_commit )
3133     THEN
3134 	COMMIT;
3135     END IF;
3136 
3137 
3138    --If there is one error message then extract the error meaasge
3139     FND_MSG_PUB.Count_And_Get
3140         ( p_encoded           =>      l_encoded
3141          ,p_count             =>      p_msg_count
3142          ,p_data              =>      p_msg_data      );
3143 
3144    pa_debug.reset_err_stack; -- Reset error stack
3145 
3146 
3147 EXCEPTION
3148         WHEN FND_API.G_EXC_ERROR
3149                 THEN
3150 		ROLLBACK to delete_event;
3151                 p_return_status := FND_API.G_RET_STS_ERROR;
3152                 FND_MSG_PUB.Count_And_Get
3153                         (   p_encoded           =>      l_encoded
3154 			 ,  p_count             =>      p_msg_count
3155                          ,  p_data              =>      p_msg_data      );
3156 
3157         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
3158                 THEN
3159                 ROLLBACK to delete_event;
3160                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3161                 FND_MSG_PUB.Count_And_Get
3162                         (   p_encoded           =>      l_encoded
3163                          ,  p_count             =>      p_msg_count
3164                          ,  p_data              =>      p_msg_data      );
3165 
3166         WHEN pa_event_pvt.pub_excp
3167                 THEN
3168                 ROLLBACK to delete_event;
3169                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3170 
3171                 PA_EVENT_PUB.PACKAGE_NAME
3172                 :='(event_reference='||p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
3173                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||'DELETE_EVENT';
3174 
3175                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3176                 THEN
3177                         FND_MSG_PUB.add_exc_msg
3178                                ( p_pkg_name            => PACKAGE_NAME
3179                                , p_procedure_name      => PROCEDURE_NAME );
3180                 PACKAGE_NAME:=NULL;
3181                 PROCEDURE_NAME:=NULL;
3182                 END IF;
3183 
3184                 FND_MSG_PUB.Count_And_Get
3185                         (   p_encoded           =>      l_encoded
3186                          ,  p_count             =>      p_msg_count
3187                          ,  p_data              =>      p_msg_data      );
3188 
3189         WHEN OTHERS
3190                 THEN
3191                 ROLLBACK to delete_event;
3192                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3193 
3194                 PA_EVENT_PUB.PACKAGE_NAME
3195                 :='(event_reference='||p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
3196                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'DELETE_EVENT';
3197 
3198                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3199                 THEN
3200                         FND_MSG_PUB.add_exc_msg
3201                                ( p_pkg_name            => PACKAGE_NAME
3202                                , p_procedure_name      => PROCEDURE_NAME );
3203                 PACKAGE_NAME:=NULL;
3204                 PROCEDURE_NAME:=NULL;
3205                 END IF;
3206 
3207                 FND_MSG_PUB.Count_And_Get
3208                         (   p_encoded           =>      l_encoded
3209                          ,  p_count             =>      p_msg_count
3210                          ,  p_data              =>      p_msg_data      );
3211 
3212 
3213   END DELETE_EVENT;
3214 
3215 -- ============================================================================
3216 --
3217 --Name:               init_event
3218 --Type:               Procedure
3219 --Description:        This procedure can be used to initialize the global PL/SQL
3220 --                    tables that are used by a LOAD/EXECUTE/FETCH cycle.
3221 --
3222 --History:
3223 --
3224 -- =============================================================================
3225   PROCEDURE INIT_EVENT
3226   AS
3227   BEGIN
3228 
3229   --Initialising global tables
3230   G_event_in_tbl.delete;
3231   G_event_out_tbl.delete;
3232 
3233 EXCEPTION
3234         WHEN OTHERS
3235                 THEN
3236 
3237                 PA_EVENT_PUB.PACKAGE_NAME
3238                 :=PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
3239                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'INIT_EVENT';
3240 
3241                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3242                 THEN
3243                         FND_MSG_PUB.add_exc_msg
3244                                ( p_pkg_name            => PACKAGE_NAME
3245                                , p_procedure_name      => PROCEDURE_NAME );
3246                 PACKAGE_NAME:=NULL;
3247                 PROCEDURE_NAME:=NULL;
3248                 END IF;
3249 
3250   END INIT_EVENT;
3251 
3252 -- ============================================================================
3253 --
3254 --Name:               load_event
3255 --Type:               Procedure
3256 --Description:        This procedure can be used to move the event related
3257 --                    parameters from the client side to a record on the server side
3258 --                    , where it will be used by a LOAD/EXECUTE/FETCH cycle.
3259 --
3260 --History:
3261 --
3262 -- ============================================================================
3263 
3264 PROCEDURE LOAD_EVENT
3265 (p_pm_product_code      	 IN      VARCHAR2
3266 ,P_api_version_number            IN      NUMBER
3267 ,P_init_msg_list                 IN      VARCHAR2
3268 ,P_pm_event_reference            IN      VARCHAR2
3269 ,P_task_number                   IN      VARCHAR2
3270 ,P_event_number                  IN      NUMBER
3271 ,P_event_type                    IN      VARCHAR2
3272 ,P_agreement_number              IN      VARCHAR2 -- Federal Uptake
3273 ,P_agreement_type                IN      VARCHAR2 -- Federal Uptake
3274 ,P_customer_number               IN      VARCHAR2 -- Federal Uptake
3275 ,P_description                   IN      VARCHAR2
3276 ,P_bill_hold_flag                IN      VARCHAR2
3277 ,P_completion_date               IN      DATE
3278 ,P_desc_flex_name                IN      VARCHAR2
3279 ,P_attribute_category            IN      VARCHAR2
3280 ,P_attribute1                    IN      VARCHAR2
3281 ,P_attribute2                    IN      VARCHAR2
3282 ,P_attribute3                    IN      VARCHAR2
3283 ,P_attribute4                    IN      VARCHAR2
3284 ,P_attribute5                    IN      VARCHAR2
3285 ,P_attribute6                    IN      VARCHAR2
3286 ,P_attribute7                    IN      VARCHAR2
3287 ,P_attribute8                    IN      VARCHAR2
3288 ,P_attribute9                    IN      VARCHAR2
3289 ,P_attribute10                   IN      VARCHAR2
3290 ,P_project_number                IN      VARCHAR2
3291 ,P_organization_name             IN      VARCHAR2
3292 ,P_inventory_org_name            IN      VARCHAR2
3293 ,P_inventory_item_id             IN      NUMBER
3294 ,P_quantity_billed               IN      NUMBER
3295 ,P_uom_code                      IN      VARCHAR2
3296 ,P_unit_price                    IN      NUMBER
3297 ,P_reference1                    IN      VARCHAR2
3298 ,P_reference2                    IN      VARCHAR2
3299 ,P_reference3                    IN      VARCHAR2
3300 ,P_reference4                    IN      VARCHAR2
3301 ,P_reference5                    IN      VARCHAR2
3302 ,P_reference6                    IN      VARCHAR2
3303 ,P_reference7                    IN      VARCHAR2
3304 ,P_reference8                    IN      VARCHAR2
3305 ,P_reference9                    IN      VARCHAR2
3306 ,P_reference10                   IN      VARCHAR2
3307 ,P_bill_trans_currency_code      IN      VARCHAR2
3308 ,P_bill_trans_bill_amount        IN      NUMBER
3309 ,P_bill_trans_rev_amount         IN      NUMBER
3310 ,P_project_rate_type             IN      VARCHAR2
3311 ,P_project_rate_date             IN      DATE
3312 ,P_project_exchange_rate         IN      NUMBER
3313 ,P_projfunc_rate_type            IN      VARCHAR2
3314 ,P_projfunc_rate_date            IN      DATE
3315 ,P_projfunc_exchange_rate        IN      NUMBER
3316 ,P_funding_rate_type             IN      VARCHAR2
3317 ,P_funding_rate_date             IN      DATE
3318 ,P_funding_exchange_rate         IN      NUMBER
3319 ,P_adjusting_revenue_flag        IN      VARCHAR2
3320 ,P_event_id                      IN      NUMBER
3321 ,P_return_status                 OUT     NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
3322 
3323 AS
3324 
3325 p_api_name		VARCHAR2(100):='LOAD_EVENT';
3326 p_msg_count		NUMBER:=0;
3327 p_msg_data		VARCHAR2(2000);
3328 BEGIN
3329 
3330   -- Initialize the Error Stack
3331   pa_debug.set_err_stack('PA_EVENT_PUB.LOAD_EVENT');
3332 
3333   --Log Message
3334   IF l_debug_mode = 'Y' THEN
3335   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.LOAD_EVENT.begin'
3336                      ,x_msg         => 'Beginning of Load_Event'
3337                      ,x_log_level   => 5);
3338   End If;
3339 
3340 
3341   --Log Message
3342   IF l_debug_mode = 'Y' THEN
3343   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.LOAD_EVENT.begin'
3344                      ,x_msg         => 'Beginning of  api compatibility check '
3345                      ,x_log_level   => 5);
3346   End If;
3347 
3348 --  Standard call to check for api compatibility.
3349     IF NOT FND_API.Compatible_API_Call ( g_api_version_number   ,
3350                                          p_api_version_number   ,
3351                                          p_api_name             ,
3352                                          G_PKG_NAME             )
3353     THEN
3354         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3355     END IF;
3356 
3357   --Log Message
3358   IF l_debug_mode = 'Y' THEN
3359   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.LOAD_EVENT.begin'
3360                      ,x_msg         => 'Beginning of Loading the global tables'
3361                      ,x_log_level   => 5);
3362   End If;
3363 
3364   --If return status is success then populating the global tables
3365 
3366 G_event_in_tbl(G_event_tbl_count).P_pm_event_reference             :=P_pm_event_reference;
3367 G_event_in_tbl(G_event_tbl_count).P_task_number                    :=P_task_number;
3368 G_event_in_tbl(G_event_tbl_count).P_event_number                   :=P_event_number;
3369 G_event_in_tbl(G_event_tbl_count).P_event_type                     :=P_event_type;
3370 -- Added the below three lines for Federal Uptake
3371 G_event_in_tbl(G_event_tbl_count).P_agreement_number               :=P_agreement_number;
3372 G_event_in_tbl(G_event_tbl_count).P_agreement_type                 :=P_agreement_type;
3373 G_event_in_tbl(G_event_tbl_count).P_customer_number                :=P_customer_number;
3374 G_event_in_tbl(G_event_tbl_count).P_description                    :=P_description;
3375 G_event_in_tbl(G_event_tbl_count).P_bill_hold_flag                 :=P_bill_hold_flag;
3376 G_event_in_tbl(G_event_tbl_count).P_completion_date                :=P_completion_date;
3377 G_event_in_tbl(G_event_tbl_count).P_desc_flex_name                 :=P_desc_flex_name;
3378 G_event_in_tbl(G_event_tbl_count).P_attribute_category             :=P_attribute_category;
3379 G_event_in_tbl(G_event_tbl_count).P_attribute1                     :=P_attribute1;
3380 G_event_in_tbl(G_event_tbl_count).P_attribute2                     :=P_attribute2;
3381 G_event_in_tbl(G_event_tbl_count).P_attribute3                     :=P_attribute3;
3382 G_event_in_tbl(G_event_tbl_count).P_attribute4                     :=P_attribute4;
3383 G_event_in_tbl(G_event_tbl_count).P_attribute5                     :=P_attribute5;
3384 G_event_in_tbl(G_event_tbl_count).P_attribute6                     :=P_attribute6;
3385 G_event_in_tbl(G_event_tbl_count).P_attribute7                     :=P_attribute7;
3386 G_event_in_tbl(G_event_tbl_count).P_attribute8                     :=P_attribute8;
3387 G_event_in_tbl(G_event_tbl_count).P_attribute9                     :=P_attribute9;
3388 G_event_in_tbl(G_event_tbl_count).P_attribute10                    :=P_attribute10;
3389 G_event_in_tbl(G_event_tbl_count).P_project_number                 :=P_project_number;
3390 G_event_in_tbl(G_event_tbl_count).P_organization_name              :=P_organization_name;
3391 G_event_in_tbl(G_event_tbl_count).P_inventory_org_name             :=P_inventory_org_name;
3392 G_event_in_tbl(G_event_tbl_count).P_inventory_item_id              :=P_inventory_item_id;
3393 G_event_in_tbl(G_event_tbl_count).P_quantity_billed                :=P_quantity_billed;
3394 G_event_in_tbl(G_event_tbl_count).P_uom_code                       :=P_uom_code;
3395 G_event_in_tbl(G_event_tbl_count).P_unit_price                     :=P_unit_price;
3396 G_event_in_tbl(G_event_tbl_count).P_reference1                     :=P_reference1;
3397 G_event_in_tbl(G_event_tbl_count).P_reference2                     :=P_reference2;
3398 G_event_in_tbl(G_event_tbl_count).P_reference3                     :=P_reference3;
3399 G_event_in_tbl(G_event_tbl_count).P_reference4                     :=P_reference4;
3400 G_event_in_tbl(G_event_tbl_count).P_reference5                     :=P_reference5;
3401 G_event_in_tbl(G_event_tbl_count).P_reference6                     :=P_reference6;
3402 G_event_in_tbl(G_event_tbl_count).P_reference7                     :=P_reference7;
3403 G_event_in_tbl(G_event_tbl_count).P_reference8                     :=P_reference8;
3404 G_event_in_tbl(G_event_tbl_count).P_reference9                     :=P_reference9;
3405 G_event_in_tbl(G_event_tbl_count).P_reference10                    :=P_reference10;
3406 G_event_in_tbl(G_event_tbl_count).P_bill_trans_currency_code       :=P_bill_trans_currency_code;
3407 G_event_in_tbl(G_event_tbl_count).P_bill_trans_bill_amount         :=P_bill_trans_bill_amount;
3408 G_event_in_tbl(G_event_tbl_count).P_bill_trans_rev_amount          :=P_bill_trans_rev_amount;
3409 G_event_in_tbl(G_event_tbl_count).P_project_rate_type              :=P_project_rate_type;
3410 G_event_in_tbl(G_event_tbl_count).P_project_rate_date              :=P_project_rate_date;
3411 G_event_in_tbl(G_event_tbl_count).P_project_exchange_rate          :=P_project_exchange_rate;
3412 G_event_in_tbl(G_event_tbl_count).P_projfunc_rate_type             :=P_projfunc_rate_type;
3413 G_event_in_tbl(G_event_tbl_count).P_projfunc_rate_date             :=P_projfunc_rate_date;
3414 G_event_in_tbl(G_event_tbl_count).P_projfunc_exchange_rate         :=P_projfunc_exchange_rate;
3415 G_event_in_tbl(G_event_tbl_count).P_funding_rate_type              :=P_funding_rate_type;
3416 G_event_in_tbl(G_event_tbl_count).P_funding_rate_date              :=P_funding_rate_date;
3417 G_event_in_tbl(G_event_tbl_count).P_funding_exchange_rate          :=P_funding_exchange_rate;
3418 G_event_in_tbl(G_event_tbl_count).P_adjusting_revenue_flag         :=P_adjusting_revenue_flag;
3419 G_event_in_tbl(G_event_tbl_count).P_event_id                       :=P_event_id;
3420 
3421   G_event_tbl_count := G_event_tbl_count+1;
3422 
3423   pa_debug.reset_err_stack; -- Reset error stack
3424 EXCEPTION
3425         WHEN FND_API.G_EXC_ERROR
3426                 THEN
3427                 p_return_status := FND_API.G_RET_STS_ERROR;
3428                 FND_MSG_PUB.Count_And_Get
3429                         (   p_count             =>      p_msg_count     ,
3430                             p_data              =>      p_msg_data      );
3431 
3432         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
3433                 THEN
3434                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3435                 FND_MSG_PUB.Count_And_Get
3436                         (   p_count             =>      p_msg_count
3437                          ,  p_data              =>      p_msg_data      );
3438 
3439         WHEN OTHERS
3440                 THEN
3441                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3442 
3443                 PA_EVENT_PUB.PACKAGE_NAME
3444                 :='(event_reference='||G_event_in_tbl(G_event_tbl_count).P_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
3445                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'LOAD_EVENT';
3446 
3447                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3448                 THEN
3449                         FND_MSG_PUB.add_exc_msg
3450                                ( p_pkg_name            => PACKAGE_NAME
3451                                , p_procedure_name      => PROCEDURE_NAME );
3452                 PACKAGE_NAME:=NULL;
3453                 PROCEDURE_NAME:=NULL;
3454                 END IF;
3455 
3456                 FND_MSG_PUB.Count_And_Get
3457                         (   p_count             =>      p_msg_count     ,
3458                             p_data              =>      p_msg_data      );
3459 
3460 
3461 END LOAD_EVENT;
3462 
3463 -- ============================================================================
3464 --
3465 --Name:               EXECUTE_CREATE_EVENT
3466 --Type:               Procedure
3467 --Description:        This procedure can be used to create an event
3468 --                    using global PL/SQL tables.
3469 --
3470 --Called subprograms: XXX
3471 --
3472 --History:
3473 -- ============================================================================
3474 PROCEDURE EXECUTE_CREATE_EVENT
3475 (p_api_version_number	IN	NUMBER
3476 ,p_commit		IN	VARCHAR2
3477 ,p_init_msg_list	IN	VARCHAR2
3478 ,p_pm_product_code	IN	VARCHAR2
3479 ,p_event_id_out		OUT	NOCOPY NUMBER --File.Sql.39 bug 4440895
3480 ,p_msg_count            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
3481 ,p_msg_data             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3482 ,p_return_status        OUT     NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
3483 
3484 AS
3485 p_api_name              VARCHAR2(100):='EXECUTE_CREATE_EVENT';
3486 l_encoded		varchar2(1):='F';
3487 BEGIN
3488   -- Initialize the Error Stack
3489   pa_debug.set_err_stack('PA_EVENT_PUB.EXECUTE_CREATE_EVENT');
3490 
3491   --Log Message
3492   IF l_debug_mode = 'Y' THEN
3493   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.EXECUTE_CREATE_EVENT.begin'
3494                      ,x_msg         => 'Beginning of Execute_Create_Event'
3495                      ,x_log_level   => 5);
3496   End If;
3497 
3498 
3499 
3500   --Log Message
3501   IF l_debug_mode = 'Y' THEN
3502   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.EXECUTE_CREATE_EVENT.begin'
3503                      ,x_msg         => 'Beginning of  api compatibility check '
3504                      ,x_log_level   => 5);
3505   End If;
3506 
3507 --  Standard call to check for api compatibility.
3508     IF NOT FND_API.Compatible_API_Call ( g_api_version_number   ,
3509                                          p_api_version_number   ,
3510                                          p_api_name             ,
3511                                          G_PKG_NAME             )
3512     THEN
3513         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3514     END IF;
3515 
3516   --Log Message
3517   IF l_debug_mode = 'Y' THEN
3518   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.EXECUTE_CREATE_EVENT.begin'
3519                      ,x_msg         => 'Calling Create_event '
3520                      ,x_log_level   => 5);
3521   End If;
3522 
3523   --- Calling Create_event procedure for further processing
3524     Create_event
3525 	(P_api_version_number		 =>p_api_version_number
3526 	,P_commit                        =>p_commit
3527 	,P_init_msg_list                 =>p_init_msg_list
3528 	,P_msg_count                     =>p_msg_count
3529 	,P_msg_data                      =>p_msg_data
3530 	,P_return_status                 =>p_return_status
3531 	,P_pm_product_code               =>p_pm_product_code
3532 	,P_event_in_tbl                  =>G_event_in_tbl
3533 	,P_event_out_tbl                 =>G_event_out_tbl);
3534 
3535 
3536 	   If p_return_status <> FND_API.G_RET_STS_SUCCESS
3537 	   Then
3538 		IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR
3539 		THEN
3540 				RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3541 
3542 		ELSIF p_return_status = FND_API.G_RET_STS_ERROR
3543 		THEN
3544 				RAISE FND_API.G_EXC_ERROR;
3545 		END IF;
3546 	   End If;
3547 
3548    -- If single event is processed then return the event_id
3549     If G_event_out_tbl.count = 1
3550     Then
3551       p_event_id_out := G_event_out_tbl(0).event_id;
3552     End If;
3553 
3554   -- Call fetch_event API in case of multiple events creation
3555   -- to get the event id of new events created
3556 
3557    pa_debug.reset_err_stack; -- Reset error stack
3558 
3559 
3560 EXCEPTION
3561         WHEN FND_API.G_EXC_ERROR
3562                 THEN
3563                 p_event_id_out := NULL; -- NOCOPY
3564                 p_return_status := FND_API.G_RET_STS_ERROR;
3565                 FND_MSG_PUB.Count_And_Get
3566                         ( p_encoded           =>      l_encoded
3567                          ,p_count             =>      p_msg_count
3568                          ,p_data              =>      p_msg_data      );
3569 
3570         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
3571                 THEN
3572                 p_event_id_out := NULL; -- NOCOPY
3573                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3574                 FND_MSG_PUB.Count_And_Get
3575                         ( p_encoded           =>      l_encoded
3576                          ,p_count             =>      p_msg_count
3577                          ,p_data              =>      p_msg_data      );
3578 
3579         WHEN OTHERS
3580                 THEN
3581                 p_event_id_out := NULL; -- NOCOPY
3582                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3583 
3584                 PA_EVENT_PUB.PACKAGE_NAME
3585                 :=PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
3586                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'EXECUTE_CREATE_EVENT';
3587 
3588                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3589                 THEN
3590                         FND_MSG_PUB.add_exc_msg
3591                                ( p_pkg_name            => PACKAGE_NAME
3592                                , p_procedure_name      => PROCEDURE_NAME );
3593                 PACKAGE_NAME:=NULL;
3594                 PROCEDURE_NAME:=NULL;
3595                 END IF;
3596 
3597                 FND_MSG_PUB.Count_And_Get
3598                         ( p_encoded           =>      l_encoded
3599                          ,p_count             =>      p_msg_count
3600                          ,p_data              =>      p_msg_data      );
3601 
3602 
3603 END EXECUTE_CREATE_EVENT;
3604 
3605 -- ============================================================================
3606 --
3607 --Name:               EXECUTE_UPDATE_EVENT
3608 --Type:               Procedure
3609 --Description:        This procedure can be used to update an event
3610 --                    using global PL/SQL tables.
3611 --
3612 --Called subprograms: XXX
3613 --
3614 --History:
3615 --
3616 -- ============================================================================
3617 
3618 PROCEDURE EXECUTE_UPDATE_EVENT
3619 (p_api_version_number	IN	NUMBER
3620 ,p_commit		IN	VARCHAR2
3621 ,p_init_msg_list	IN	VARCHAR2
3622 ,p_pm_product_code	IN	VARCHAR2
3623 ,p_msg_count            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
3624 ,p_msg_data             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3625 ,p_return_status        OUT     NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
3626 
3627 AS
3628 
3629 p_api_name		VARCHAR2(100):='EXECUTE_UPDATE_EVENT';
3630 l_encoded               VARCHAR2(1):='F';
3631 
3632 BEGIN
3633 
3634   -- Initialize the Error Stack
3635   pa_debug.set_err_stack('PA_EVENT_PUB.EXECUTE_UPDATE_EVENT');
3636 
3637   --Log Message
3638   IF l_debug_mode = 'Y' THEN
3639   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.EXECUTE_UPDATE_EVENT.begin'
3640                      ,x_msg         => 'Beginning of Execute_Update_Event'
3641                      ,x_log_level   => 5);
3642   End If;
3643 
3644 
3645   --Log Message
3646   IF l_debug_mode = 'Y' THEN
3647   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.EXECUTE_UPDATE_EVENT.begin'
3648                      ,x_msg         => 'Beginning of  api compatibility check '
3649                      ,x_log_level   => 5);
3650   End If;
3651 
3652 --  Standard call to check for api compatibility.
3653     IF NOT FND_API.Compatible_API_Call ( g_api_version_number   ,
3654                                          p_api_version_number   ,
3655                                          p_api_name             ,
3656                                          G_PKG_NAME             )
3657     THEN
3658 	p_return_status:=FND_API.G_RET_STS_ERROR;
3659         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3660     END IF;
3661 
3662   --Log Message
3663   IF l_debug_mode = 'Y' THEN
3664   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.EXECUTE_UPDATE_EVENT.begin'
3665                      ,x_msg         => 'Calling Update_event '
3666                      ,x_log_level   => 5);
3667   End If;
3668 
3669   --Calling update_event procedure for further processing
3670 
3671     UPDATE_EVENT
3672         (P_api_version_number            =>p_api_version_number
3673         ,P_commit                        =>p_commit
3674         ,P_init_msg_list                 =>p_init_msg_list
3675         ,P_msg_count                     =>p_msg_count
3676         ,P_msg_data                      =>p_msg_data
3677         ,P_return_status                 =>p_return_status
3678         ,P_pm_product_code               =>p_pm_product_code
3679         ,P_event_in_tbl                  =>G_event_in_tbl
3680         ,P_event_out_tbl                 =>G_event_out_tbl);
3681 
3682 	   If p_return_status <> FND_API.G_RET_STS_SUCCESS
3683 	   Then
3684 		IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR
3685 		THEN
3686 				RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3687 
3688 		ELSIF p_return_status = FND_API.G_RET_STS_ERROR
3689 		THEN
3690 				RAISE FND_API.G_EXC_ERROR;
3691 		END IF;
3692 	   End If;
3693 
3694    pa_debug.reset_err_stack; -- Reset error stack
3695 
3696 
3697 EXCEPTION
3698         WHEN FND_API.G_EXC_ERROR
3699                 THEN
3700                 p_return_status := FND_API.G_RET_STS_ERROR;
3701                 FND_MSG_PUB.Count_And_Get
3702                         ( p_encoded           =>      l_encoded
3703                          ,p_count             =>      p_msg_count
3704                          ,p_data              =>      p_msg_data      );
3705 
3706         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
3707                 THEN
3708                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3709                 FND_MSG_PUB.Count_And_Get
3710                         ( p_encoded           =>      l_encoded
3711                          ,p_count             =>      p_msg_count
3712                          ,p_data              =>      p_msg_data      );
3713 
3714         WHEN OTHERS
3715                 THEN
3716                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3717 
3718                 PA_EVENT_PUB.PACKAGE_NAME
3719                 :=PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
3720                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'EXECUTE_UPDATE_EVENT';
3721 
3722                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3723                 THEN
3724                         FND_MSG_PUB.add_exc_msg
3725                                ( p_pkg_name            => PACKAGE_NAME
3726                                , p_procedure_name      => PROCEDURE_NAME );
3727                 PACKAGE_NAME:=NULL;
3728                 PROCEDURE_NAME:=NULL;
3729                 END IF;
3730 
3731                 FND_MSG_PUB.Count_And_Get
3732                         ( p_encoded           =>      l_encoded
3733                          ,p_count             =>      p_msg_count
3734                          ,p_data              =>      p_msg_data      );
3735 
3736 END EXECUTE_UPDATE_EVENT;
3737 
3738 -- ============================================================================
3739 --
3740 --Name:               clear_event
3741 --Type:               Procedure
3742 --Description:        This procedure can be used to clear the global PL/SQL
3743 --                    tables that are used by a LOAD/EXECUTE/FETCH cycle.
3744 --
3745 --Called subprograms: init_event
3746 --History:
3747 --
3748 -- =======================================================================
3749 PROCEDURE CLEAR_EVENT
3750 AS
3751 
3752 BEGIN
3753   -- Call init_event procedure
3754     init_event;
3755 
3756 EXCEPTION
3757 	WHEN OTHERS
3758 	THEN
3759 
3760                 PA_EVENT_PUB.PACKAGE_NAME
3761                 :=PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
3762                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'CLEAR_EVENT';
3763 
3764                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3765                 THEN
3766                         FND_MSG_PUB.add_exc_msg
3767                                ( p_pkg_name            => PACKAGE_NAME
3768                                , p_procedure_name      => PROCEDURE_NAME );
3769                 PACKAGE_NAME:=NULL;
3770                 PROCEDURE_NAME:=NULL;
3771                 END IF;
3772 
3773 END CLEAR_EVENT;
3774 
3775 
3776 -- ============================================================================
3777 --
3778 --Name:               fetch_event
3779 --Type:               Procedure
3780 --Description:        This procedure can be used to return the event_ids to the
3781 --		      external system  .
3782 --
3783 --Called subprograms: XXX
3784 --
3785 --
3786 --
3787 --History:
3788 --
3789 --  ============================================================================
3790 PROCEDURE FETCH_EVENT
3791        (p_api_version_number		IN		NUMBER
3792 	,P_pm_product_code		IN		VARCHAR2
3793 	,P_pm_event_reference		IN		VARCHAR2
3794 	,P_event_id_out			OUT		NOCOPY NUMBER --File.Sql.39 bug 4440895
3795 	,p_return_status                OUT             NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
3796 IS
3797 tot_recs		NUMBER:=0;
3798 p_api_name		VARCHAR2(100):='FETCH_EVENT';
3799 p_msg_count		NUMBER;
3800 p_msg_data		VARCHAR2(2000);
3801 l_encoded		VARCHAR2(1):='F';
3802 BEGIN
3803 
3804   -- Initialize the Error Stack
3805   pa_debug.set_err_stack('PA_EVENT_PUB.FETCH_EVENT');
3806 
3807   --Log Message
3808   IF l_debug_mode = 'Y' THEN
3809   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.FETCH_EVENT.begin'
3810                      ,x_msg         => 'Beginning of Fetch_Event'
3811                      ,x_log_level   => 5);
3812   End If;
3813 
3814 
3815   --Set savepoint
3816     Savepoint fetch_event;
3817       p_msg_count := 0;
3818       p_return_status := FND_API.G_RET_STS_SUCCESS;
3819 
3820   --Log Message
3821   IF l_debug_mode = 'Y' THEN
3822   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.FETCH_EVENT.begin'
3823                      ,x_msg         => 'Beginning of  api compatibility check '
3824                      ,x_log_level   => 5);
3825   End If;
3826 
3827 --  Standard call to check for api compatibility.
3828     IF NOT FND_API.Compatible_API_Call ( g_api_version_number   ,
3829                                          p_api_version_number   ,
3830                                          p_api_name             ,
3831                                          G_PKG_NAME             )
3832     THEN
3833         p_return_status:=FND_API.G_RET_STS_ERROR;
3834         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3835     END IF;
3836     -- CHECK WHETHER MANDATORY INCOMING PARAMETER PRODUCT CODE EXIST
3837 
3838     IF (p_pm_product_code IS NULL)
3839         OR (p_pm_product_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
3840     THEN
3841         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
3842         THEN
3843                 pa_interface_utils_pub.map_new_amg_msg
3844                         ( p_old_message_code => 'PA_PRODUCT_CODE_IS_MISS'
3845                         ,p_msg_attribute    => 'CHANGE'
3846                         ,p_resize_flag      => 'N'
3847                         ,p_msg_context      => 'EVENT'
3848                         ,p_attribute1       => ''
3849                         ,p_attribute2       => ''
3850                         ,p_attribute3       => ''
3851                         ,p_attribute4       => ''
3852                         ,p_attribute5       => '');
3853          END IF;
3854          p_return_status := FND_API.G_RET_STS_ERROR;
3855          RAISE FND_API.G_EXC_ERROR;
3856     END IF;
3857 
3858   --Log Message
3859   IF l_debug_mode = 'Y' THEN
3860   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.FETCH_EVENT.begin'
3861                      ,x_msg         => 'Begin Fetching event_id from event_reference'
3862                      ,x_log_level   => 5);
3863   End If;
3864 
3865 
3866  --Deriving event_id from p_pm_event_reference.
3867     If(p_pm_event_reference Is NOT NULL
3868 	And p_pm_event_reference <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
3869     Then
3870         While tot_recs <= G_event_tbl_count
3871 	loop
3872 	    If (G_event_out_tbl(tot_recs).pm_event_reference = p_pm_event_reference )
3873 	    Then
3874 		  P_event_id_out:=G_event_out_tbl(tot_recs).event_id;
3875 		  Exit;
3876 	    End If;
3877 	    tot_recs :=tot_recs + 1;
3878 	End Loop;
3879     Else
3880             If FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
3881             Then
3882 			FND_MESSAGE.SET_NAME('PA','PA_API_CONV_ERROR_AMG'); -- Bug 2257612
3883                		FND_MESSAGE.SET_TOKEN('ATTR_NAME','p_pm_event_reference');
3884                		FND_MESSAGE.SET_TOKEN('ATTR_VALUE', p_pm_event_reference);
3885                		FND_MSG_PUB.ADD;
3886              End If;
3887          p_return_status := FND_API.G_RET_STS_ERROR;
3888          RAISE FND_API.G_EXC_ERROR;
3889     END IF;
3890 
3891 	FND_MSG_PUB.Count_And_Get
3892 		(   p_encoded           =>      l_encoded
3893 		 ,  p_count             =>      p_msg_count
3894 		 ,  p_data              =>      p_msg_data      );
3895 
3896 
3897   --Log Message
3898   IF l_debug_mode = 'Y' THEN
3899   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.FETCH_EVENT.begin'
3900                      ,x_msg         => 'End of Fetch_Event'
3901                      ,x_log_level   => 5);
3902   End If;
3903 
3904    pa_debug.reset_err_stack; -- Reset error stack
3905 
3906 EXCEPTION
3907         WHEN FND_API.G_EXC_ERROR
3908                 THEN
3909 		ROLLBACK to fetch_event;
3910                 p_event_id_out := NULL; -- NOCOPY
3911                 p_return_status := FND_API.G_RET_STS_ERROR;
3912                 FND_MSG_PUB.Count_And_Get
3913                         (   p_encoded           =>      l_encoded
3914                          ,  p_count             =>      p_msg_count
3915                          ,  p_data              =>      p_msg_data      );
3916 
3917         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
3918                 THEN
3919                 ROLLBACK to fetch_event;
3920                 p_event_id_out := NULL; -- NOCOPY
3921                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3922                 FND_MSG_PUB.Count_And_Get
3923                         (   p_encoded           =>      l_encoded
3924                          ,  p_count             =>      p_msg_count
3925                          ,  p_data              =>      p_msg_data      );
3926 
3927         WHEN OTHERS
3928                 THEN
3929                 ROLLBACK to fetch_event;
3930                 p_event_id_out := NULL; -- NOCOPY
3931                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3932 
3933                 PA_EVENT_PUB.PACKAGE_NAME
3934                 :='(event_reference='||p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
3935                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'FETCH_EVENT';
3936 
3937                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3938                 THEN
3939                         FND_MSG_PUB.add_exc_msg
3940                                ( p_pkg_name            => PACKAGE_NAME
3941                                , p_procedure_name      => PROCEDURE_NAME );
3942                 PACKAGE_NAME:=NULL;
3943                 PROCEDURE_NAME:=NULL;
3944                 END IF;
3945 
3946                 FND_MSG_PUB.Count_And_Get
3947                         (   p_encoded           =>      l_encoded
3948                          ,  p_count             =>      p_msg_count
3949                          ,  p_data              =>      p_msg_data      );
3950 
3951 
3952 END FETCH_EVENT;
3953 
3954 -- ============================================================================
3955 --
3956 --Name:               CHECK_DELETE_EVENT_OK
3957 --Type:               procedure
3958 --Description: This API ONLY checks if an existing event or a set of existing events
3959 --             can be deleted or not.
3960 --Called subprograms:
3961 --
3962 --
3963 --
3964 --History:
3965 
3966 -- ============================================================================
3967 PROCEDURE CHECK_DELETE_EVENT_OK
3968 (P_api_version_number	IN	NUMBER
3969 ,P_commit		IN	VARCHAR2
3970 ,P_init_msg_list	IN	VARCHAR2
3971 ,P_pm_product_code	IN	VARCHAR2
3972 ,P_pm_event_reference	IN	VARCHAR2
3973 ,P_event_id		IN	NUMBER
3974 ,P_del_event_ok_flag	OUT	NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3975 ,P_msg_count            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
3976 ,P_msg_data             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3977 ,P_return_status        OUT     NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
3978 
3979 
3980 AS
3981 p_api_name		VARCHAR2(100):='CHECK_DELETE_EVENT_OK';
3982 l_event_id		NUMBER:=NULL;
3983 l_encoded		VARCHAR2(1):='F';
3984 l_pm_event_reference    VARCHAR2(25);
3985 BEGIN
3986   -- Initialize the Error Stack
3987   pa_debug.set_err_stack('PA_EVENT_PUB.CHECK_DELETE_EVENT_OK');
3988 
3989   --Log Message
3990   IF l_debug_mode = 'Y' THEN
3991   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CHECK_DELETE_EVENT_OK.begin'
3992                      ,x_msg         => 'Beginning of Check_Delete_Event_Ok'
3993                      ,x_log_level   => 5);
3994    END IF;
3995 
3996   --Set savepoint
3997     Savepoint check_delete_event_ok;
3998       p_msg_count := 0;
3999       p_return_status := FND_API.G_RET_STS_SUCCESS;
4000 
4001   --Log Message
4002   IF l_debug_mode = 'Y' THEN
4003   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CHECK_DELETE_EVENT_OK.begin'
4004                      ,x_msg         => 'Calling  mandatory input parameters-1'
4005                      ,x_log_level   => 5);
4006    END IF;
4007 
4008  --Validating mandatory input parameters-1
4009 
4010    PA_EVENT_PVT.CHECK_MDTY_PARAMS1
4011     ( p_api_version_number             =>p_api_version_number
4012      ,p_api_name                       =>p_api_name
4013      ,p_pm_product_code                =>p_pm_product_code
4014      ,p_function_name                  =>'PA_EV_DEL_EVENT_OK'
4015      ,x_return_status                  =>p_return_status
4016      ,x_msg_count                      =>p_msg_count
4017      ,x_msg_data                       =>p_msg_data );
4018 
4019    If p_return_status <> FND_API.G_RET_STS_SUCCESS
4020    Then
4021         IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR
4022         THEN
4023                         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4024 
4025         ELSIF p_return_status = FND_API.G_RET_STS_ERROR
4026         THEN
4027                         RAISE FND_API.G_EXC_ERROR;
4028         END IF;
4029    End If;
4030 
4031   --Log Message
4032   IF l_debug_mode = 'Y' THEN
4033   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CHECK_DELETE_EVENT_OK.begin'
4034 		     ,x_msg         => 'Calling conv_event_ref_to_id'
4035 		     ,x_log_level   => 5);
4036   END IF;
4037 
4038     l_event_id:=p_event_id;
4039  --Validation of event_id or pm_event_reference and conversion to event_id
4040     If PA_EVENT_PVT.CONV_EVENT_REF_TO_ID
4041           (P_pm_product_code      =>P_pm_product_code
4042           ,P_pm_event_reference   =>l_pm_event_reference
4043           ,P_event_id             =>l_event_id)
4044           ='N'
4045     Then
4046           p_return_status             := FND_API.G_RET_STS_ERROR;
4047           RAISE FND_API.G_EXC_ERROR;
4048     End If;
4049 
4050   --Log Message
4051   IF l_debug_mode = 'Y' THEN
4052   pa_debug.write_log (x_module      => 'pa.plsql.PA_EVENT_PUB.CHECK_DELETE_EVENT_OK.begin'
4053                      ,x_msg         => 'Calling Check_Event_Processed'
4054                      ,x_log_level   => 5);
4055   END IF;
4056 
4057 
4058   --Validating if the event is billed or revenue distributed
4059   --Calls PA_EVENT_UTILS.CHECK_EVENT_PROCESSED
4060 
4061     If PA_EVENT_UTILS.CHECK_EVENT_PROCESSED
4062 	(P_event_id		=>l_event_id) IN ('N','I','R')/*For Bug 7305416*/
4063     Then
4064           pa_interface_utils_pub.map_new_amg_msg
4065            ( p_old_message_code => 'PA_TK_EVENT_IN_USE'
4066             ,p_msg_attribute    => 'CHANGE'
4067             ,p_resize_flag      => 'N'
4068             ,p_msg_context      => 'EVENT'
4069             ,p_attribute1       => l_pm_event_reference
4070             ,p_attribute2       => ''
4071             ,p_attribute3       => ''
4072             ,p_attribute4       => ''
4073             ,p_attribute5       => '');
4074            p_return_status := FND_API.G_RET_STS_ERROR;
4075            RAISE FND_API.G_EXC_ERROR;
4076     END IF;
4077 
4078 	FND_MSG_PUB.Count_And_Get
4079 		(   p_encoded           =>      l_encoded
4080 		 ,  p_count             =>      p_msg_count
4081 		 ,  p_data              =>      p_msg_data      );
4082 
4083    pa_debug.reset_err_stack; -- Reset error stack
4084 
4085 
4086 EXCEPTION
4087         WHEN FND_API.G_EXC_ERROR
4088                 THEN
4089 		ROLLBACK to check_delete_event_ok;
4090                 p_return_status := FND_API.G_RET_STS_ERROR;
4091                 FND_MSG_PUB.Count_And_Get
4092 			(   p_encoded           =>      l_encoded
4093 			 ,  p_count             =>      p_msg_count
4094 			 ,  p_data              =>      p_msg_data      );
4095 
4096         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
4097                 THEN
4098                 ROLLBACK to check_delete_event_ok;
4099                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4100                 FND_MSG_PUB.Count_And_Get
4101                         (   p_encoded           =>      l_encoded
4102                          ,  p_count             =>      p_msg_count
4103                          ,  p_data              =>      p_msg_data      );
4104 
4105         WHEN OTHERS
4106                 THEN
4107                 ROLLBACK to check_delete_event_ok;
4108                 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4109 
4110                 PA_EVENT_PUB.PACKAGE_NAME
4111                 :='(event_reference='||p_pm_event_reference||')'||PA_EVENT_PUB.PACKAGE_NAME||'PUBLIC';
4112                 PA_EVENT_PUB.PROCEDURE_NAME:=PA_EVENT_PUB.PROCEDURE_NAME||substr(sqlerrm,1,80)||'CHECK_DELETE_EVENT_OK';
4113 
4114                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4115                 THEN
4116                         FND_MSG_PUB.add_exc_msg
4117                                ( p_pkg_name            => PACKAGE_NAME
4118                                , p_procedure_name      => PROCEDURE_NAME );
4119                 PACKAGE_NAME:=NULL;
4120                 PROCEDURE_NAME:=NULL;
4121                 END IF;
4122 
4123                 FND_MSG_PUB.Count_And_Get
4124                         (   p_encoded           =>      l_encoded
4125                          ,  p_count             =>      p_msg_count
4126                          ,  p_data              =>      p_msg_data      );
4127 
4128 
4129 END CHECK_DELETE_EVENT_OK;
4130 
4131 END PA_EVENT_PUB;