DBA Data[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 ;