[Home] [Help]
PACKAGE BODY: APPS.CN_PAY_APPROVAL_FLOW_PVT
Source
1 PACKAGE BODY CN_PAY_APPROVAL_FLOW_PVT AS
2 -- $Header: cnvpflwb.pls 120.4 2006/02/13 15:23:30 fmburu ship $
3
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'CN_PAY_APPROVAL_FLOW_PVT';
5 G_FILE_NAME CONSTANT VARCHAR2(12) := 'cnvpflwb.pls';
6
7 --
8 -- Procedure : Get_Payrun_Info
9 --
10 PROCEDURE Get_Payrun_Info
11 (p_worksheet_id IN NUMBER,
12 x_period_id OUT NOCOPY NUMBER,
13 x_payrun_id OUT NOCOPY NUMBER,
14 x_resource_id OUT NOCOPY NUMBER,
15 x_user_email OUT NOCOPY VARCHAR2) IS
16
17 BEGIN
18 BEGIN
19 SELECT resource_id,source_email INTO x_resource_id,x_user_email
20 FROM jtf_rs_resource_extns
21 WHERE user_id = fnd_global.user_id;
22 EXCEPTION
23 WHEN no_data_found THEN
24 -- resource not exist for this user
25 FND_MESSAGE.SET_NAME ('CN','CN_USER_RESOURCE_NF');
26 FND_MSG_PUB.Add;
27 RAISE FND_API.G_EXC_ERROR;
28 END;
29 BEGIN
30 SELECT p.payrun_id,p.pay_period_id INTO x_payrun_id,x_period_id
31 FROM cn_payment_worksheets w,cn_payruns p
32 WHERE w.payment_worksheet_id = p_worksheet_id
33 AND p.payrun_id = w.payrun_id
34 --R12
35 AND p.org_id = w.org_id
36 ;
37 EXCEPTION
38 WHEN no_data_found THEN
39 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
40 THEN
41 FND_MESSAGE.SET_NAME ('CN','CN_WKSHT_DOES_NOT_EXIST');
42 FND_MSG_PUB.Add;
43 END IF;
44 RAISE FND_API.G_EXC_ERROR ;
45 END;
46 END Get_Payrun_Info ;
47
48
49 --
50 -- Procedure : Get_Mgr_List
51 --
52 PROCEDURE Get_Mgr_List
53 (p_worksheet_id IN NUMBER,
54 p_action IN VARCHAR2,
55 p_payrun_id IN NUMBER,
56 p_resource_id IN NUMBER,
57 p_period_id IN NUMBER,
58 p_user_email IN VARCHAR2) IS
59
60 l_approval_status cn_pay_approval_flow.approval_status%TYPE;
61 l_flow_rec cn_pay_approval_flow_pkg.pay_approval_flow_rec_type;
62
63 CURSOR c_mgr_csr(c_org_id NUMBER) IS
64 SELECT DISTINCT m1.parent_resource_id mgr_resource_id,
65 re1.source_email mgr_email,re1.user_id mgr_user_id
66 FROM cn_period_statuses pr,
67 jtf_rs_group_usages u1, jtf_rs_rep_managers m1,
68 jtf_rs_resource_extns re1
69 WHERE pr.period_id = p_period_id
70 AND pr.org_id = c_org_id
71 AND u1.usage = 'COMP_PAYMENT'
72 AND m1.resource_id = p_resource_id
73 AND ((m1.start_date_active <= pr.end_date) AND
74 (pr.start_date <= Nvl(m1.end_date_active,pr.start_date)))
75 AND u1.group_id = m1.group_id
76 AND m1.hierarchy_type IN ('MGR_TO_MGR','MGR_TO_REP')
77 AND m1.category <> 'TBH'
78 AND (m1.reports_to_flag = 'Y' -- Bug 2819874
79 OR (m1.reports_to_flag = 'N' AND m1.denorm_level = 1))
80 AND re1.resource_id = m1.parent_resource_id
81 ;
82
83 --R12
84 p_org_id cn_payruns.org_id%TYPE;
85 l_has_access BOOLEAN;
86
87 BEGIN
88
89 IF p_action = 'SUBMIT' THEN
90 --Added for R12 payment security check begin.
91 l_has_access := CN_PAYMENT_SECURITY_PVT.get_security_access(
92 CN_PAYMENT_SECURITY_PVT.g_type_wksht,
93 CN_PAYMENT_SECURITY_PVT.g_access_wksht_submit);
94 IF ( l_has_access = FALSE)
95 THEN
96 RAISE FND_API.G_EXC_ERROR ;
97 END IF;
98 --Added for R12 payment security check end.
99
100 l_approval_status := 'SUBMITTED';
101 ELSIF p_action = 'APPROVE' THEN
102 --Added for R12 payment security check begin.
103 l_has_access := CN_PAYMENT_SECURITY_PVT.get_security_access(
104 CN_PAYMENT_SECURITY_PVT.g_type_wksht,
105 CN_PAYMENT_SECURITY_PVT.g_access_wksht_approve);
106 IF ( l_has_access = FALSE)
107 THEN
108 RAISE FND_API.G_EXC_ERROR ;
109 END IF;
110 --Added for R12 payment security check end.
111
112 l_approval_status := 'APPROVED';
113 END IF;
114
115 --R12
116 SELECT org_id
117 INTO p_org_id
118 FROM cn_payruns
119 WHERE payrun_id = p_payrun_id;
120
121 IF cn_payment_security_pvt.is_superuser(p_period_id => p_period_id,p_org_id=>p_org_id) = 1 THEN
122 -- insert record into cn_pay_approval_flow
123 SELECT cn_pay_approval_flow_s.NEXTVAL
124 INTO l_flow_rec.pay_approval_flow_id FROM dual;
125 l_flow_rec.payrun_id := p_payrun_id;
126 l_flow_rec.payment_worksheet_id := p_worksheet_id;
127 l_flow_rec.submit_by_resource_id := p_resource_id ;
128 l_flow_rec.submit_by_user_id := fnd_global.user_id;
129 l_flow_rec.submit_by_email := p_user_email;
130 l_flow_rec.submit_to_resource_id := p_resource_id ;
131 l_flow_rec.submit_to_user_id := fnd_global.user_id;
132 l_flow_rec.submit_to_email := p_user_email;
133 l_flow_rec.approval_status := l_approval_status ;
134 l_flow_rec.updated_by_resource_id := p_resource_id;
135 --R12
136 l_flow_rec.org_id := p_org_id;
137 cn_pay_approval_flow_pkg.insert_row
138 ( p_pay_approval_flow_rec => l_flow_rec);
139 ELSE
140 FOR l_mgr_csr IN c_mgr_csr(p_org_id) LOOP
141 -- insert record into cn_pay_approval_flow
142 SELECT cn_pay_approval_flow_s.NEXTVAL
143 INTO l_flow_rec.pay_approval_flow_id FROM dual;
144 l_flow_rec.payrun_id := p_payrun_id;
145 l_flow_rec.payment_worksheet_id := p_worksheet_id;
146 l_flow_rec.submit_by_resource_id := p_resource_id ;
147 l_flow_rec.submit_by_user_id := fnd_global.user_id;
148 l_flow_rec.submit_by_email := p_user_email;
149 l_flow_rec.submit_to_resource_id := l_mgr_csr.mgr_resource_id ;
150 l_flow_rec.submit_to_user_id := l_mgr_csr.mgr_user_id;
151 l_flow_rec.submit_to_email := l_mgr_csr.mgr_email;
152 l_flow_rec.approval_status := l_approval_status ;
153 l_flow_rec.updated_by_resource_id := p_resource_id;
154 --R12
155 l_flow_rec.org_id := p_org_id;
156 cn_pay_approval_flow_pkg.insert_row
157 ( p_pay_approval_flow_rec => l_flow_rec);
158 END LOOP;
159 END IF;
160
161 END Get_Mgr_List ;
162
163
164 -- Start of comments
165 -- API name : Submit_Worksheet
166 -- Type : Private.
167 -- Function : submit worksheet for approval.
168 -- Pre-reqs : None.
169 -- Parameters :
170 -- IN : p_worksheet_id IN NUMBER
171 -- OUT :
172 -- Version : Current version 1.0
173 --
174 -- End of comments
175
176
177 PROCEDURE Submit_Worksheet
178 ( p_api_version IN NUMBER ,
179 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE ,
180 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
181 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
182 x_return_status OUT NOCOPY VARCHAR2 ,
183 x_msg_count OUT NOCOPY NUMBER ,
184 x_msg_data OUT NOCOPY VARCHAR2 ,
185 p_worksheet_id IN NUMBER
186 ) IS
187 l_api_name CONSTANT VARCHAR2(30) := 'Submit_Worksheet';
188 l_api_version CONSTANT NUMBER := 1.0;
189
190 l_payrun_id cn_payruns.payrun_id%TYPE;
191 l_resource_id jtf_rs_resource_extns.resource_id%TYPE;
192 l_period_id cn_period_statuses.period_id%TYPE;
193 l_user_email jtf_rs_resource_extns.source_email%TYPE;
194
195 l_has_access BOOLEAN;
196
197 BEGIN
198 -- Standard Start of API savepoint
199 SAVEPOINT Submit_Worksheet;
200 -- Standard call to check for call compatibility.
201 IF NOT FND_API.compatible_api_call
202 ( l_api_version ,p_api_version ,l_api_name ,G_PKG_NAME )
203 THEN
204 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
205 END IF;
206 -- Initialize message list if p_init_msg_list is set to TRUE.
207 IF FND_API.to_Boolean( p_init_msg_list ) THEN
208 FND_MSG_PUB.initialize;
209 END IF;
210 -- Initialize API return status to success
211 x_return_status := FND_API.G_RET_STS_SUCCESS;
212 -- API body
213
214 --Added for R12 payment security check begin.
215 l_has_access := CN_PAYMENT_SECURITY_PVT.get_security_access(
216 CN_PAYMENT_SECURITY_PVT.g_type_wksht,
217 CN_PAYMENT_SECURITY_PVT.g_access_wksht_submit);
218 IF ( l_has_access = FALSE)
219 THEN
220 RAISE FND_API.G_EXC_ERROR ;
221 END IF;
222 --Added for R12 payment security check end.
223
224 -- delete records in CN_PAY_APPROVAL_FLOW
225 DELETE FROM cn_pay_approval_flow
226 WHERE payment_worksheet_id = p_worksheet_id;
227 -- get_payrun_info
228 Get_Payrun_Info
229 (p_worksheet_id => p_worksheet_id,
230 x_period_id => l_period_id,
231 x_payrun_id => l_payrun_id,
232 x_resource_id => l_resource_id,
233 x_user_email => l_user_email);
234
235 -- call get_mgr_list
236 Get_Mgr_List
237 (p_worksheet_id => p_worksheet_id,
238 p_action => 'SUBMIT',
239 p_period_id => l_period_id,
240 p_payrun_id => l_payrun_id,
241 p_resource_id => l_resource_id,
242 p_user_email => l_user_email);
243
244 -- End of API body.
245 -- Standard check of p_commit.
246 IF FND_API.To_Boolean( p_commit ) THEN
247 COMMIT WORK;
248 END IF;
249 -- Standard call to get message count and if count is 1, get message info.
250 FND_MSG_PUB.Count_And_Get
251 (p_count => x_msg_count ,
252 p_data => x_msg_data ,
253 p_encoded => FND_API.G_FALSE);
254
255 EXCEPTION
256 WHEN FND_API.G_EXC_ERROR THEN
257 ROLLBACK TO Submit_Worksheet ;
258 x_return_status := FND_API.G_RET_STS_ERROR ;
259 FND_MSG_PUB.Count_And_Get
260 (p_count => x_msg_count ,
261 p_data => x_msg_data ,
262 p_encoded => FND_API.G_FALSE);
263
264 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
265 ROLLBACK TO Submit_Worksheet ;
266 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
267 FND_MSG_PUB.count_and_get
268 (p_count => x_msg_count ,
269 p_data => x_msg_data ,
270 p_encoded => FND_API.G_FALSE);
271
272 WHEN OTHERS THEN
273 ROLLBACK TO Submit_Worksheet ;
274 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
275 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
276 THEN
277 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
278 END IF;
279 FND_MSG_PUB.Count_And_Get
280 (p_count => x_msg_count ,
281 p_data => x_msg_data ,
282 p_encoded => FND_API.G_FALSE);
283
284 END Submit_Worksheet;
285
286 -- Start of comments
287 -- API name : Approve_Worksheet
288 -- Type : Private.
289 -- Function : approve worksheet
290 -- Pre-reqs : None.
291 -- Parameters :
292 -- IN : p_worksheet_id IN NUMBER
293 -- OUT :
294 -- Version : Current version 1.0
295 --
296 -- End of comments
297
298
299 PROCEDURE Approve_Worksheet
300 ( p_api_version IN NUMBER ,
301 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE ,
302 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
303 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
304 x_return_status OUT NOCOPY VARCHAR2 ,
305 x_msg_count OUT NOCOPY NUMBER ,
306 x_msg_data OUT NOCOPY VARCHAR2 ,
307 p_worksheet_id IN NUMBER
308 ) IS
309 l_api_name CONSTANT VARCHAR2(30) := 'Approve_Worksheet';
310 l_api_version CONSTANT NUMBER := 1.0;
311
312 l_payrun_id cn_payruns.payrun_id%TYPE;
313 l_resource_id jtf_rs_resource_extns.resource_id%TYPE;
314 l_period_id cn_period_statuses.period_id%TYPE;
315 l_user_email jtf_rs_resource_extns.source_email%TYPE;
316
317 l_has_access BOOLEAN;
318
319 BEGIN
320 -- Standard Start of API savepoint
321 SAVEPOINT Approve_Worksheet;
322 -- Standard call to check for call compatibility.
323 IF NOT FND_API.compatible_api_call
324 ( l_api_version ,p_api_version ,l_api_name ,G_PKG_NAME )
325 THEN
326 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
327 END IF;
328 -- Initialize message list if p_init_msg_list is set to TRUE.
329 IF FND_API.to_Boolean( p_init_msg_list ) THEN
330 FND_MSG_PUB.initialize;
331 END IF;
332 -- Initialize API return status to success
333 x_return_status := FND_API.G_RET_STS_SUCCESS;
334 -- API body
335 --Added for R12 payment security check begin.
336 l_has_access := CN_PAYMENT_SECURITY_PVT.get_security_access(
337 CN_PAYMENT_SECURITY_PVT.g_type_wksht,
338 CN_PAYMENT_SECURITY_PVT.g_access_wksht_approve);
339 IF ( l_has_access = FALSE)
340 THEN
341 RAISE FND_API.G_EXC_ERROR ;
342 END IF;
343 --Added for R12 payment security check end.
344
345 -- get_payrun_info
346 Get_Payrun_Info
347 (p_worksheet_id => p_worksheet_id,
348 x_period_id => l_period_id,
349 x_payrun_id => l_payrun_id,
350 x_resource_id => l_resource_id,
351 x_user_email => l_user_email);
352
353 -- update pay_approval_flow record
354 UPDATE cn_pay_approval_flow
355 SET approval_status = 'APPROVED', updated_by_resource_id = l_resource_id,
356 last_updated_by = fnd_global.user_id,
357 last_update_date = Sysdate,
358 last_update_login = fnd_global.login_id
359 WHERE payment_worksheet_id = p_worksheet_id
360 ;
361
362 -- call get_mgr_list
363 Get_Mgr_List
364 (p_worksheet_id => p_worksheet_id,
365 p_action => 'APPROVE',
366 p_period_id => l_period_id,
367 p_payrun_id => l_payrun_id,
368 p_resource_id => l_resource_id,
369 p_user_email => l_user_email);
370
371 -- End of API body.
372 -- Standard check of p_commit.
373 IF FND_API.To_Boolean( p_commit ) THEN
374 COMMIT WORK;
375 END IF;
376 -- Standard call to get message count and if count is 1, get message info.
377 FND_MSG_PUB.Count_And_Get
378 (p_count => x_msg_count ,
379 p_data => x_msg_data ,
380 p_encoded => FND_API.G_FALSE);
381
382 EXCEPTION
383 WHEN FND_API.G_EXC_ERROR THEN
384 ROLLBACK TO Approve_Worksheet ;
385 x_return_status := FND_API.G_RET_STS_ERROR ;
386 FND_MSG_PUB.Count_And_Get
387 (p_count => x_msg_count ,
388 p_data => x_msg_data ,
389 p_encoded => FND_API.G_FALSE);
390
391 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
392 ROLLBACK TO Approve_Worksheet ;
393 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
394 FND_MSG_PUB.count_and_get
395 (p_count => x_msg_count ,
396 p_data => x_msg_data ,
397 p_encoded => FND_API.G_FALSE);
398
399 WHEN OTHERS THEN
400 ROLLBACK TO Approve_Worksheet ;
401 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
402 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
403 THEN
404 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
405 END IF;
406 FND_MSG_PUB.Count_And_Get
407 (p_count => x_msg_count ,
408 p_data => x_msg_data ,
409 p_encoded => FND_API.G_FALSE);
410
411 END Approve_Worksheet;
412
413 -- Start of comments
414 -- API name : Reject_Worksheet
415 -- Type : Private.
416 -- Function : reject worksheet
417 -- Pre-reqs : None.
418 -- Parameters :
419 -- IN : p_worksheet_id IN NUMBER
420 -- OUT :
421 -- Version : Current version 1.0
422 --
423 -- End of comments
424
425
426 PROCEDURE Reject_Worksheet
427 ( p_api_version IN NUMBER ,
428 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE ,
429 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
430 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
431 x_return_status OUT NOCOPY VARCHAR2 ,
432 x_msg_count OUT NOCOPY NUMBER ,
433 x_msg_data OUT NOCOPY VARCHAR2 ,
434 p_worksheet_id IN NUMBER
435 ) IS
436 l_api_name CONSTANT VARCHAR2(30) := 'Reject_Worksheet';
437 l_api_version CONSTANT NUMBER := 1.0;
438
439 l_payrun_id cn_payruns.payrun_id%TYPE;
440 l_resource_id jtf_rs_resource_extns.resource_id%TYPE;
441 l_period_id cn_period_statuses.period_id%TYPE;
442 l_user_email jtf_rs_resource_extns.source_email%TYPE;
443
444 l_has_access BOOLEAN;
445
446 BEGIN
447 -- Standard Start of API savepoint
448 SAVEPOINT Reject_Worksheet;
449 -- Standard call to check for call compatibility.
450 IF NOT FND_API.compatible_api_call
451 ( l_api_version ,p_api_version ,l_api_name ,G_PKG_NAME )
452 THEN
453 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
454 END IF;
455 -- Initialize message list if p_init_msg_list is set to TRUE.
456 IF FND_API.to_Boolean( p_init_msg_list ) THEN
457 FND_MSG_PUB.initialize;
458 END IF;
459 -- Initialize API return status to success
460 x_return_status := FND_API.G_RET_STS_SUCCESS;
461 -- API body
462
463 --Added for R12 payment security check begin.
464 l_has_access := CN_PAYMENT_SECURITY_PVT.get_security_access(
465 CN_PAYMENT_SECURITY_PVT.g_type_wksht,
466 CN_PAYMENT_SECURITY_PVT.g_access_wksht_reject);
467 IF ( l_has_access = FALSE)
468 THEN
469 RAISE FND_API.G_EXC_ERROR ;
470 END IF;
471 --Added for R12 payment security check end.
472
473 -- get_payrun_info
474 Get_Payrun_Info
475 (p_worksheet_id => p_worksheet_id,
476 x_period_id => l_period_id,
477 x_payrun_id => l_payrun_id,
478 x_resource_id => l_resource_id,
479 x_user_email => l_user_email);
480
481 -- update pay_approval_flow record
482 UPDATE cn_pay_approval_flow
483 SET approval_status = 'REJECTED', updated_by_resource_id = l_resource_id,
484 last_updated_by = fnd_global.user_id,
485 last_update_date = Sysdate,
486 last_update_login = fnd_global.login_id
487 WHERE payment_worksheet_id = p_worksheet_id
488 ;
489
490 -- End of API body.
491 -- Standard check of p_commit.
492 IF FND_API.To_Boolean( p_commit ) THEN
493 COMMIT WORK;
494 END IF;
495 -- Standard call to get message count and if count is 1, get message info.
496 FND_MSG_PUB.Count_And_Get
497 (p_count => x_msg_count ,
498 p_data => x_msg_data ,
499 p_encoded => FND_API.G_FALSE);
500
501 EXCEPTION
502 WHEN FND_API.G_EXC_ERROR THEN
503 ROLLBACK TO Reject_Worksheet ;
504 x_return_status := FND_API.G_RET_STS_ERROR ;
505 FND_MSG_PUB.Count_And_Get
506 (p_count => x_msg_count ,
507 p_data => x_msg_data ,
508 p_encoded => FND_API.G_FALSE);
509
510 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
511 ROLLBACK TO Reject_Worksheet ;
512 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
513 FND_MSG_PUB.count_and_get
514 (p_count => x_msg_count ,
515 p_data => x_msg_data ,
516 p_encoded => FND_API.G_FALSE);
517
518 WHEN OTHERS THEN
519 ROLLBACK TO Reject_Worksheet ;
520 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
521 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
522 THEN
523 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
524 END IF;
525 FND_MSG_PUB.Count_And_Get
526 (p_count => x_msg_count ,
527 p_data => x_msg_data ,
528 p_encoded => FND_API.G_FALSE);
529
530 END Reject_Worksheet;
531
532 -- Start of comments
533 -- API name : Pay_Payrun
534 -- Type : Private.
535 -- Function : pay payrun
536 -- Pre-reqs : None.
537 -- Parameters :
538 -- IN : p_payrun_id IN NUMBER
539 -- OUT :
540 -- Version : Current version 1.0
541 --
542 -- End of comments
543
544
545 PROCEDURE Pay_Payrun
546 ( p_api_version IN NUMBER ,
547 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE ,
548 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
549 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
550 x_return_status OUT NOCOPY VARCHAR2 ,
551 x_msg_count OUT NOCOPY NUMBER ,
552 x_msg_data OUT NOCOPY VARCHAR2 ,
553 p_payrun_id IN NUMBER
554 ) IS
555 l_api_name CONSTANT VARCHAR2(30) := 'Pay_Payrun';
556 l_api_version CONSTANT NUMBER := 1.0;
557
558 l_has_access BOOLEAN;
559
560 BEGIN
561 -- Standard Start of API savepoint
562 SAVEPOINT Pay_Payrun_Flow;
563 -- Standard call to check for call compatibility.
564 IF NOT FND_API.compatible_api_call
565 ( l_api_version ,p_api_version ,l_api_name ,G_PKG_NAME )
566 THEN
567 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
568 END IF;
569 -- Initialize message list if p_init_msg_list is set to TRUE.
570 IF FND_API.to_Boolean( p_init_msg_list ) THEN
571 FND_MSG_PUB.initialize;
572 END IF;
573 -- Initialize API return status to success
574 x_return_status := FND_API.G_RET_STS_SUCCESS;
575 -- API body
576
577 --Added for R12 payment security check begin.
578 l_has_access := CN_PAYMENT_SECURITY_PVT.get_security_access(
579 CN_PAYMENT_SECURITY_PVT.g_type_payrun,
580 CN_PAYMENT_SECURITY_PVT.g_access_payrun_pay);
581 IF ( l_has_access = FALSE)
582 THEN
583 RAISE FND_API.G_EXC_ERROR ;
584 END IF;
585 --Added for R12 payment security check end.
586
587 -- delete record
588 DELETE FROM cn_pay_approval_flow
589 WHERE payrun_id = p_payrun_id
590 ;
591 -- End of API body.
592 -- Standard check of p_commit.
593 IF FND_API.To_Boolean( p_commit ) THEN
594 COMMIT WORK;
595 END IF;
596 -- Standard call to get message count and if count is 1, get message info.
597 FND_MSG_PUB.Count_And_Get
598 (p_count => x_msg_count ,
599 p_data => x_msg_data ,
600 p_encoded => FND_API.G_FALSE);
601
602 EXCEPTION
603 WHEN FND_API.G_EXC_ERROR THEN
604 ROLLBACK TO Pay_Payrun_Flow ;
605 x_return_status := FND_API.G_RET_STS_ERROR ;
606 FND_MSG_PUB.Count_And_Get
607 (p_count => x_msg_count ,
608 p_data => x_msg_data ,
609 p_encoded => FND_API.G_FALSE);
610
611 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
612 ROLLBACK TO Pay_Payrun_Flow ;
613 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
614 FND_MSG_PUB.count_and_get
615 (p_count => x_msg_count ,
616 p_data => x_msg_data ,
617 p_encoded => FND_API.G_FALSE);
618
619 WHEN OTHERS THEN
620 ROLLBACK TO Pay_Payrun_Flow ;
621 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
622 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
623 THEN
624 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
625 END IF;
626 FND_MSG_PUB.Count_And_Get
627 (p_count => x_msg_count ,
628 p_data => x_msg_data ,
629 p_encoded => FND_API.G_FALSE);
630
631 END Pay_Payrun;
632
633 END CN_PAY_APPROVAL_FLOW_PVT ;