DBA Data[Home] [Help]

PACKAGE BODY: APPS.CN_PMTSUB_PUB

Source


1 PACKAGE BODY CN_PmtSub_PUB as
2 -- $Header: cnppsubb.pls 120.3 2005/11/07 22:41:57 sjustina noship $
3 
4 --============================================================================
5 --Name :Pay_Payrun_conc
6 --Description : Procedure which will be used as the executable for the concurrent
7 --              program CN_PAY_PAYRUN
8 --
9 --============================================================================
10 PROCEDURE Pay_Payrun_conc
11      ( errbuf  OUT NOCOPY VARCHAR2,
12      retcode OUT NOCOPY NUMBER ,
13     p_name            cn_payruns.name%TYPE ) IS
14 
15      l_proc_audit_id NUMBER;
16      l_return_status VARCHAR2(1000);
17      l_msg_data      VARCHAR2(2000);
18      l_msg_count     NUMBER;
19      l_loading_status VARCHAR2(1000);
20      l_status VARCHAR2(2000);
21      l_org_id  NUMBER ;
22 
23 
24 BEGIN
25 
26    retcode := 0;
27    -- Initial message list
28    FND_MSG_PUB.initialize;
29 
30    l_org_id   := mo_global.get_current_org_id;
31    mo_global.validate_orgid_pub_api(org_id => l_org_id, status => l_status);
32    if (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
33     FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
34                    'cn.plsql.cn_pmtsub_pub.pay_payrun_conc.org_validate',
35                      'Validated org_id = ' || l_org_id || ' status = '||l_status);
36    end if;
37 
38    IF l_org_id IS NULL THEN
39     fnd_message.set_name('FND', 'MO_OU_REQUIRED');
40     fnd_msg_pub.ADD;
41     RAISE FND_API.G_EXC_ERROR;
42    END IF;
43 
44    cn_message_pkg.begin_batch
45 
46      ( x_process_type            => 'PMT',
47        x_process_audit_id        => l_proc_audit_id,
48        x_parent_proc_audit_id    => l_proc_audit_id,
49        x_request_id              => NULL,
50        p_org_id                  => l_org_id
51        );
52    cn_message_pkg.debug('***************************************************');
53    cn_message_pkg.debug('Processing payment');
54 
55    Pay
56      (  p_api_version => 1.0,
57   p_init_msg_list => fnd_api.g_true,
58         p_commit => fnd_api.g_true,
59   x_return_status => l_return_status,
60   x_msg_count => l_msg_count,
61   x_msg_data => l_msg_data,
62   p_payrun_name => p_name,
63      p_org_id                  => l_org_id,
64         x_loading_status => l_loading_status,
65   x_status => l_status
66   );
67 
68  IF l_return_status <> FND_API.g_ret_sts_success
69    THEN
70     retcode := 2;
71     errbuf := FND_MSG_PUB.get(p_msg_index => fnd_msg_pub.G_LAST,
72             p_encoded   => FND_API.G_FALSE);
73     cn_message_pkg.debug('Error for payrun : '||errbuf);
74 
75   ELSE
76     COMMIT;
77  END IF;
78 END;
79 --============================================================================
80 -- Procedure : Pay
81 -- Description: To pay a payrun
82 --              Update the subledger
83 --============================================================================
84 
85    PROCEDURE  Pay
86    (    p_api_version     IN  NUMBER,
87     p_init_msg_list           IN  VARCHAR2,
88   p_commit          IN    VARCHAR2,
89   p_validation_level    IN    NUMBER,
90         x_return_status          OUT NOCOPY   VARCHAR2,
91       x_msg_count            OUT NOCOPY   NUMBER,
92       x_msg_data       OUT NOCOPY   VARCHAR2,
93       p_payrun_name                   IN      cn_payruns.name%TYPE,
94       p_org_id              IN NUMBER,
95       x_status               OUT NOCOPY   VARCHAR2,
96       x_loading_status       OUT NOCOPY   VARCHAR2
97     ) IS
98 
99       l_api_name    CONSTANT VARCHAR2(30)  := 'Pay';
100       l_api_version             CONSTANT NUMBER        := 1.0;
101 
102       l_payrun_id               NUMBER;
103       l_org_id                  NUMBER;
104       l_status      CN_PAYRUNS.STATUS%TYPE;
105 
106       l_payrun_name             cn_payruns.name%TYPE;
107       l_OAI_array   JTF_USR_HKS.oai_data_array_type;
108       l_bind_data_id            NUMBER;
109       l_ovn    Number ;
110 
111       l_PKG_NAME                  CONSTANT VARCHAR2(30) := 'CN_PmtSub_PUB';
112 
113    BEGIN
114 
115    --
116    -- Standard Start of API savepoint
117    --
118    SAVEPOINT    Pay;
119    --
120    -- Standard call to check for call compatibility.
121    --
122    IF NOT FND_API.Compatible_API_Call ( l_api_version ,
123           p_api_version ,
124           l_api_name    ,
125           l_PKG_NAME )
126      THEN
127       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
128    END IF;
129    --
130    -- Initialize message list if p_init_msg_list is set to TRUE.
131    --
132    IF FND_API.to_Boolean( p_init_msg_list ) THEN
133       FND_MSG_PUB.initialize;
134    END IF;
135    --
136    --  Initialize API return status to success
137    --
138    x_return_status := FND_API.G_RET_STS_SUCCESS;
139    x_loading_status := 'CN_UPDATED';
140 
141    --
142    -- Assign the parameter to a local variable
143    --
144    l_payrun_name := p_payrun_name;
145    l_org_id :=  p_org_id;
146    mo_global.validate_orgid_pub_api(org_id => l_org_id, status => l_status);
147    if (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
148     FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
149                    'cn.plsql.cn_pmtsub_pub.pay.org_validate',
150                      'Validated org_id = ' || l_org_id || ' status = '||l_status);
151    end if;
152 
153 
154    IF l_org_id IS NULL THEN
155     fnd_message.set_name('FND', 'MO_OU_REQUIRED');
156     fnd_msg_pub.ADD;
157     RAISE FND_API.G_EXC_ERROR;
158    END IF;
159 
160    --
161    -- User hooks
162    --
163 
164    IF JTF_USR_HKS.Ok_to_Execute('CN_PMTSUB_PUB',
165         'PAY',
166         'B',
167         'C')
168      THEN
169       cn_pmtsub_pub_cuhk.pay_pre
170   (p_api_version            => p_api_version,
171    p_init_msg_list    => fnd_api.g_false,
172    p_commit         => fnd_api.g_false,
173    p_validation_level   => p_validation_level,
174    x_return_status    => x_return_status,
175    x_msg_count      => x_msg_count,
176    x_msg_data     => x_msg_data,
177    p_payrun_name                  => l_payrun_name,
178     p_payrun_id         => l_payrun_id,
179    x_loading_status   => x_loading_status,
180    x_status                       => x_status
181    );
182 
183       IF ( x_return_status = FND_API.G_RET_STS_ERROR )
184   THEN
185    RAISE FND_API.G_EXC_ERROR;
186        ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR )
187    THEN
188    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
189       END IF;
190    END IF;
191 
192    IF JTF_USR_HKS.Ok_to_Execute('CN_PMTSUB_PUB',
193         'PAY',
194         'B',
195         'V')
196      THEN
197       cn_pmtsub_pub_vuhk.pay_pre
198   (p_api_version            => p_api_version,
199    p_init_msg_list    => fnd_api.g_false,
200    p_commit         => fnd_api.g_false,
201    p_validation_level   => p_validation_level,
202    x_return_status    => x_return_status,
203    x_msg_count      => x_msg_count,
204    x_msg_data     => x_msg_data,
205    p_payrun_name                  => l_payrun_name,
206    p_payrun_id         => l_payrun_id,
207    x_loading_status   => x_loading_status,
208    x_status                       => x_status
209    );
210 
211       IF ( x_return_status = FND_API.G_RET_STS_ERROR )
212   THEN
213    RAISE FND_API.G_EXC_ERROR;
214        ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR )
215    THEN
216    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
217       END IF;
218    END IF;
219 
220 
221     -- Added Exception and for update
222     BEGIN
223       SELECT payrun_id, status, object_version_number
224         INTO l_payrun_id, l_status, l_ovn
225         FROM cn_payruns
226        WHERE name = p_payrun_name
227        AND org_id=l_org_id
228          FOR update of payrun_id;
229 
230        IF l_status = 'PAID' THEN
231             IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error)
232              THEN
233               fnd_message.set_name('CN', 'CN_PAYRUN_ALREADY_PAID');
234               fnd_msg_pub.add;
235              END IF;
236              x_loading_status := 'CN_PAYRUN_ALREADY_PAID';
237              RAISE FND_API.G_EXC_ERROR;
238        END IF;
239 
240     EXCEPTION
241         WHEN no_data_found THEN
242 
243              IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error)
244              THEN
245               fnd_message.set_name('CN', 'CN_PAYRUN_DOES_NOT_EXIST');
246               fnd_msg_pub.add;
247              END IF;
248        x_loading_status := 'CN_PAYRUN_DOES_NOT_EXIST';
249        RAISE FND_API.G_EXC_ERROR;
250     END ;
251 
252    --
253    -- API body
254    --
255 
256    cn_payrun_pvt.pay_payrun
257      (  p_api_version         => p_api_version,
258         p_init_msg_list       => p_init_msg_list,
259         p_commit              => fnd_api.g_false,
260         p_validation_level    => p_validation_level,
261         x_return_status       => x_return_status,
262         x_msg_count           => x_msg_count,
263         x_msg_data            => x_msg_data,
264         p_payrun_id           => l_payrun_id,
265         p_x_obj_ver_number    => l_ovn,
266         x_status              => x_status,
267         x_loading_status      => x_loading_status);
268 
269    --
270    -- End of API body
271    --
272 
273 
274    --
275    -- Post processing hooks
276    --
277 
278 
279    IF JTF_USR_HKS.Ok_to_Execute('CN_PMTSUB_PUB',
280         'PAY',
281         'A',
282         'V')
283      THEN
284       cn_pmtsub_pub_vuhk.pay_post
285   (p_api_version            => p_api_version,
286    p_init_msg_list    => fnd_api.g_false,
287    p_commit         => fnd_api.g_false,
288    p_validation_level   => p_validation_level,
289    x_return_status    => x_return_status,
290    x_msg_count      => x_msg_count,
291    x_msg_data     => x_msg_data,
292          p_payrun_name                  => l_payrun_name,
293              p_payrun_id         => l_payrun_id,
294    x_loading_status   => x_loading_status,
295    x_status                       => x_status
296    );
297 
298       IF ( x_return_status = FND_API.G_RET_STS_ERROR )
299   THEN
300    RAISE FND_API.G_EXC_ERROR;
301        ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR )
302    THEN
303    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
304       END IF;
305    END IF;
306 
307    IF JTF_USR_HKS.Ok_to_Execute('CN_PMTSUB_PUB',
308               'PAY',
309         'A',
310         'C')
311      THEN
312       cn_pmtsub_pub_cuhk.pay_post
313   (p_api_version            => p_api_version,
314    p_init_msg_list    => fnd_api.g_false,
315    p_commit         => fnd_api.g_false,
316    p_validation_level   => p_validation_level,
317    x_return_status    => x_return_status,
318    x_msg_count      => x_msg_count,
319    x_msg_data     => x_msg_data,
320    p_payrun_name                  => l_payrun_name,
321        p_payrun_id         => l_payrun_id,
322    x_loading_status   => x_loading_status,
323    x_status                       => x_status
324    );
325 
326       IF ( x_return_status = FND_API.G_RET_STS_ERROR )
327   THEN
328    RAISE FND_API.G_EXC_ERROR;
329        ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR )
330    THEN
331    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
332       END IF;
333    END IF;
334 
335    IF JTF_USR_HKS.Ok_to_execute('CN_PMTSUB_PUB',
336         'PAY',
337         'M',
338         'M')
339      THEN
340       IF  cn_pmtsub_pub_cuhk.ok_to_generate_msg
341    (p_payrun_name         => l_payrun_name)
342   THEN
343    -- Get a ID for workflow/ business object instance
344    l_bind_data_id := JTF_USR_HKS.get_bind_data_id;
345 
346     --  Do this for all the bind variables in the Business Object
347    JTF_USR_HKS.load_bind_data
348      (  l_bind_data_id, 'PAYRUN_NAME', l_payrun_name, 'S', 'S');
349 
350    -- Message generation API
351    JTF_USR_HKS.generate_message
352      (p_prod_code    => 'CN',
353       p_bus_obj_code => 'PAYRUN',
354       p_bus_obj_name => 'PAYRUN',
355       p_action_code  => 'I',
356       p_bind_data_id => l_payrun_name,
357       p_oai_param    => null,
358       p_oai_array    => l_oai_array,
359       x_return_code  => x_return_status);
360 
361    IF (x_return_status = FND_API.G_RET_STS_ERROR)
362      THEN
363       RAISE FND_API.G_EXC_ERROR;
364     ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR )
365       THEN
366       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
367    END IF;
368       END IF;
369    END IF;
370 
371    -- Standard check of p_commit.
372    IF FND_API.To_Boolean( p_commit ) THEN
373       COMMIT WORK;
374    END IF;
375 
376    --
377    -- Standard call to get message count and if count is 1, get message info.
378    --
379 
380    FND_MSG_PUB.Count_And_Get
381      (
382       p_count   =>  x_msg_count ,
383       p_data    =>  x_msg_data  ,
384       p_encoded => FND_API.G_FALSE
385       );
386 
387 EXCEPTION
388    WHEN FND_API.G_EXC_ERROR THEN
389       ROLLBACK TO Pay;
390       x_return_status := FND_API.G_RET_STS_ERROR ;
391       FND_MSG_PUB.Count_And_Get
392   (
393    p_count   =>  x_msg_count ,
394    p_data    =>  x_msg_data  ,
395    p_encoded => FND_API.G_FALSE
396    );
397    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
398       ROLLBACK TO Pay;
399       x_loading_status := 'UNEXPECTED_ERR';
400       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
401       FND_MSG_PUB.Count_And_Get
402   (
403    p_count   =>  x_msg_count ,
404    p_data    =>  x_msg_data   ,
405    p_encoded => FND_API.G_FALSE
406    );
407    WHEN OTHERS THEN
408       ROLLBACK TO Pay;
409       x_loading_status := 'UNEXPECTED_ERR';
410       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
411       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
412   THEN
413    FND_MSG_PUB.Add_Exc_Msg( l_PKG_NAME ,l_api_name );
414       END IF;
415       FND_MSG_PUB.Count_And_Get
416   (
417    p_count   =>  x_msg_count ,
418    p_data    =>  x_msg_data  ,
419    p_encoded => FND_API.G_FALSE
420    );
421 END Pay;
422 --============================================================================
423  PROCEDURE submit_request (p_payrun_id    IN   NUMBER,
424                             x_request_id    OUT NOCOPY  NUMBER) IS
425 
426     l_request_id                 NUMBER := 0;
427 
428 
429    CURSOR get_payrun IS
430    SELECT name
431      FROM cn_payruns
432     WHERE payrun_id = p_payrun_id
433      AND  status = 'UNPAID';
434 
435    l_name cn_payruns.name%TYPE;
436 
437    l_ret_code  VArchar2(2000);
438    l_error_buf varchar2(2000);
439 
440   BEGIN
441 
442     if p_payrun_id is not null THEN
443 
444       open get_payrun;
445       fetch get_payrun into l_name;
446       close get_payrun;
447 
448     end if;
449 
450     if l_name is not null THEN
451 
452     /*  Pay_Payrun_conc
453      ( errbuf   => l_error_buf,
454        retcode  => l_ret_code,
455        p_name   => l_name );
456     */
457 
458      l_request_id := FND_REQUEST.SUBMIT_REQUEST('CN', 'CN_PAY_PAYRUN',
459                          '', '', FALSE,
460                          l_name, chr(0),
461                          '', '', '', '', '', '', '', '', '', '',
462                          '', '', '', '', '', '', '', '', '', '',
463                          '', '', '', '', '', '', '', '', '', '',
464                          '', '', '', '', '', '', '', '', '', '',
465                          '', '', '', '', '', '', '', '', '', '',
466                          '', '', '', '', '', '', '', '', '', '',
467                          '', '', '', '', '', '', '', '', '', '',
468                          '', '', '', '', '', '', '', '', '', '',
469                          '', '', '', '', '', '', '', '', '', '',
470                          '', '', '', '', '', '', '','');
471     END IF;
472 
473     x_request_id := l_request_id;
474 
475   END submit_request;
476 
477 
478 
479 
480 END CN_PmtSub_PUB ;