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