[Home] [Help]
PACKAGE BODY: APPS.AR_CM_APPLICATION_PUB
Source
1 PACKAGE BODY AR_CM_APPLICATION_PUB AS
2 /* $Header: ARXPCMAB.pls 120.5.12010000.2 2008/08/04 07:00:34 bsuri ship $ */
3
4 PG_DEBUG varchar2(1) := NVL(FND_PROFILE.value('AFLOG_ENABLED'), 'Y');
5
6 --Start of comments
7 --API name : Credit Memo Application API
8 --Type : Public.
9 --Function : Apply and unapply credit memos
10 --Pre-reqs :
11 --
12 -- Notes :
13 --
14 -- Modification History
15 -- Date Name Description
16 -- 26-JAN-2005 J Beckett Created.
17 -- End of comments
18
19 /* =======================================================================
20 | Global Data Types
21 * ======================================================================*/
22
23 G_PKG_NAME CONSTANT VARCHAR2(30) := 'AR_CM_APPLICATION_PUB';
24
25 G_MSG_UERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR;
26 G_MSG_ERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_ERROR;
27 G_MSG_SUCCESS CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_SUCCESS;
28 G_MSG_HIGH CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH;
29 G_MSG_MEDIUM CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM;
30 G_MSG_LOW CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
31
32 PROCEDURE activity_application(
33 -- Standard API parameters.
34 p_api_version IN NUMBER,
35 p_init_msg_list IN VARCHAR2,
36 p_commit IN VARCHAR2,
37 p_validation_level IN NUMBER,
38 x_return_status OUT NOCOPY VARCHAR2,
39 x_msg_count OUT NOCOPY NUMBER,
40 x_msg_data OUT NOCOPY VARCHAR2,
41 -- Credit Memo application parameters.
42 p_customer_trx_id IN ra_customer_trx.customer_trx_id%TYPE,
43 p_amount_applied IN ar_receivable_applications.amount_applied%TYPE,
44 p_applied_payment_schedule_id IN ar_payment_schedules.payment_schedule_id%TYPE, --this has no default
45 p_receivables_trx_id IN ar_receivable_applications.receivables_trx_id%TYPE, --this has no default
46 p_apply_date IN ar_receivable_applications.apply_date%TYPE,
47 p_apply_gl_date IN ar_receivable_applications.gl_date%TYPE,
48 p_ussgl_transaction_code IN ar_receivable_applications.ussgl_transaction_code%TYPE,
49 p_attribute_rec IN attribute_rec_type,
50 -- ******* Global Flexfield parameters *******
51 p_global_attribute_rec IN global_attribute_rec_type,
52 p_comments IN ar_receivable_applications.comments%TYPE,
53 p_chk_approval_limit_flag IN VARCHAR2,
54 p_application_ref_type IN OUT NOCOPY
55 ar_receivable_applications.application_ref_type%TYPE,
56 p_application_ref_id IN OUT NOCOPY
57 ar_receivable_applications.application_ref_id%TYPE,
58 p_application_ref_num IN OUT NOCOPY
59 ar_receivable_applications.application_ref_num%TYPE,
60 p_receivable_application_id OUT NOCOPY ar_receivable_applications.receivable_application_id%TYPE,
61 p_called_from IN VARCHAR2
62 ,p_org_id IN NUMBER
63 ,p_pay_group_lookup_code IN FND_LOOKUPS.lookup_code%TYPE
64 ,p_pay_alone_flag IN VARCHAR2
65 ,p_payment_method_code IN ap_invoices.payment_method_code%TYPE
66 ,p_payment_reason_code IN ap_invoices.payment_reason_code%TYPE
67 ,p_payment_reason_comments IN ap_invoices.payment_reason_comments%TYPE
68 ,p_delivery_channel_code IN ap_invoices.delivery_channel_code%TYPE
69 ,p_remittance_message1 IN ap_invoices.remittance_message1%TYPE
70 ,p_remittance_message2 IN ap_invoices.remittance_message2%TYPE
71 ,p_remittance_message3 IN ap_invoices.remittance_message3%TYPE
72 ,p_party_id IN hz_parties.party_id%TYPE
73 ,p_party_site_id IN hz_party_sites.party_site_id%TYPE
74 ,p_bank_account_id IN ar_cash_receipts.customer_bank_account_id%TYPE
75 )
76 IS
77 l_api_name CONSTANT VARCHAR2(20) := 'activity_application';
78 l_api_version CONSTANT NUMBER := 1.0;
79 l_customer_trx_id NUMBER;
80 l_applied_ps_id NUMBER;
81 l_amount_applied NUMBER;
82 l_cm_unapp_amount NUMBER;
83 l_apply_date DATE;
84 l_apply_gl_date DATE;
85 l_trx_date DATE;
86 l_cm_gl_date DATE;
87 l_return_status VARCHAR2(1);
88 l_def_return_status VARCHAR2(1);
89 l_val_return_status VARCHAR2(1);
90 l_id_conv_return_status VARCHAR2(1);
91 l_cm_currency_code fnd_currencies.currency_code%TYPE;
92 l_rec_app_id NUMBER;
93 l_cm_ps_id NUMBER;
94 l_cm_receipt_method_id NUMBER;
95 l_application_ref_type ar_receivable_applications.application_ref_type%TYPE;
96 l_application_ref_id ar_receivable_applications.application_ref_id%TYPE;
97 l_application_ref_num ar_receivable_applications.application_ref_num%TYPE;
98 l_acctd_amount_applied_from NUMBER;
99 l_acctd_amount_applied_to NUMBER;
100 l_msg_count NUMBER;
101 l_msg_data VARCHAR2(2000);
102
103 l_org_return_status VARCHAR2(1);
104 l_org_id NUMBER;
105 l_party_id hz_parties.party_id%TYPE;
106 l_party_name hz_parties.party_name%TYPE;
107 l_party_number hz_parties.party_number%TYPE;
108 l_party_site_id hz_party_sites.party_site_id%TYPE;
109 l_party_address VARCHAR2(360);
110 l_payment_method_code iby_payment_methods_vl.payment_method_code%TYPE;
111 l_payment_method_name iby_payment_methods_vl.payment_method_name%TYPE;
112 l_bank_account_id iby_ext_bank_accounts.ext_bank_account_id%TYPE;
113 l_bank_account_num iby_ext_bank_accounts.bank_account_num%TYPE;
114 l_payment_reason_code iby_payment_reasons_vl.payment_reason_code%TYPE;
115 l_payment_reason_name iby_payment_reasons_vl.meaning%TYPE;
116 l_delivery_channel_code iby_delivery_channels_vl.delivery_channel_code%TYPE;
117 l_delivery_channel_name iby_delivery_channels_vl.meaning%TYPE;
118 l_pay_alone_flag VARCHAR2(1);
119 l_legal_entity_id ar_cash_receipts.legal_entity_id%TYPE;
120 l_exchange_rate ar_cash_receipts.exchange_rate%TYPE;
121 l_exchange_rate_type ar_cash_receipts.exchange_rate_type%TYPE;
122 l_exchange_date ar_cash_receipts.exchange_date%TYPE;
123 l_invoice_id ap_invoices.invoice_id%TYPE;
124 l_dft_ref_return_status VARCHAR2(1);
125
126 BEGIN
127
128 /*------------------------------------+
129 | Standard start of API savepoint |
130 +------------------------------------*/
131
132 SAVEPOINT activity_app_PVT;
133
134 /*--------------------------------------------------+
135 | Standard call to check for call compatibility |
136 +--------------------------------------------------*/
137
138 IF NOT FND_API.Compatible_API_Call(
139 l_api_version,
140 p_api_version,
141 l_api_name,
142 G_PKG_NAME
143 )
144 THEN
145 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
146 END IF;
147
148 /*--------------------------------------------------------------+
149 | Initialize message list if p_init_msg_list is set to TRUE |
150 +--------------------------------------------------------------*/
151
152 IF FND_API.to_Boolean( p_init_msg_list )
153 THEN
154 FND_MSG_PUB.initialize;
155 END IF;
156
157 IF PG_DEBUG in ('Y', 'C') THEN
158 arp_util.debug('ar_cm_application_pub.activity_application()+ ');
159 END IF;
160
161 /*-------------------------------------------------+
162 | Initialize SOB/org dependent variables |
163 +-------------------------------------------------*/
164 arp_global.init_global;
165 arp_standard.init_standard;
166
167 /*-----------------------------------------+
168 | Initialize return status to SUCCESS |
169 +-----------------------------------------*/
170
171 x_return_status := FND_API.G_RET_STS_SUCCESS;
172
173 l_org_id := p_org_id;
174 l_org_return_status := FND_API.G_RET_STS_SUCCESS;
175 ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
176 p_return_status =>l_org_return_status);
177 IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
178 x_return_status := FND_API.G_RET_STS_ERROR;
179 END IF;
180
181 /*---------------------------------------------+
182 | ========== Start of API Body ========== |
183 +---------------------------------------------*/
184
185 l_customer_trx_id := p_customer_trx_id;
186 l_applied_ps_id := p_applied_payment_schedule_id;
187 l_amount_applied := p_amount_applied;
188 l_apply_date := trunc(p_apply_date);
189 l_apply_gl_date := trunc(p_apply_gl_date);
190 l_application_ref_type := p_application_ref_type;
191 l_application_ref_id := p_application_ref_id;
192 l_application_ref_num := p_application_ref_num;
193 l_party_id := p_party_id;
194 l_party_site_id := p_party_site_id;
195
196 ar_cm_app_lib_pvt.default_activity_info
197 ( p_customer_trx_id => l_customer_trx_id
198 , p_cm_ps_id => l_cm_ps_id
199 , p_cm_currency_code => l_cm_currency_code
200 , p_cm_gl_date => l_cm_gl_date
201 , p_cm_unapp_amount => l_cm_unapp_amount
202 , p_cm_receipt_method_id => l_cm_receipt_method_id
203 , p_trx_date => l_trx_date
204 , p_amount_applied => l_amount_applied
205 , p_apply_date => l_apply_date
206 , p_apply_gl_date => l_apply_gl_date
207 , p_return_status => l_def_return_status
208 );
209
210 IF p_applied_payment_schedule_id = -8 THEN
211 /* Default the refund attributes from IBY */
212 ar_receipt_lib_pvt.default_refund_attributes(
213 p_cash_receipt_id => NULL
214 ,p_customer_trx_id => l_customer_trx_id
215 ,p_currency_code => l_cm_currency_code
216 ,p_amount => l_amount_applied
217 ,p_party_id => l_party_id
218 ,p_party_site_id => l_party_site_id
219 ,x_party_name => l_party_name
220 ,x_party_number => l_party_number
221 ,x_party_address => l_party_address
222 ,x_exchange_rate => l_exchange_rate
223 ,x_exchange_rate_type => l_exchange_rate_type
224 ,x_exchange_date => l_exchange_date
225 ,x_legal_entity_id => l_legal_entity_id
226 ,x_payment_method_code => l_payment_method_code
227 ,x_payment_method_name => l_payment_method_name
228 ,x_bank_account_id => l_bank_account_id
229 ,x_bank_account_num => l_bank_account_num
230 ,x_payment_reason_code => l_payment_reason_code
231 ,x_payment_reason_name => l_payment_reason_name
232 ,x_delivery_channel_code => l_delivery_channel_code
233 ,x_delivery_channel_name => l_delivery_channel_name
234 ,x_pay_alone_flag => l_pay_alone_flag
235 ,x_return_status => l_dft_ref_return_status
236 ,x_msg_count => x_msg_count
237 ,x_msg_data => x_msg_data );
238
239 /* If values have been passed in they should be used instead */
240 IF p_payment_method_code IS NOT NULL THEN
241 l_payment_method_code := p_payment_method_code;
242 END IF;
243 IF p_bank_account_id IS NOT NULL THEN
244 l_bank_account_id := p_bank_account_id;
245 END IF;
246 IF p_payment_reason_code IS NOT NULL THEN
247 l_payment_reason_code := p_payment_reason_code;
248 END IF;
249 IF p_delivery_channel_code IS NOT NULL THEN
250 l_delivery_channel_code := p_delivery_channel_code;
251 END IF;
252 IF p_pay_alone_flag IS NOT NULL THEN
253 l_pay_alone_flag := p_pay_alone_flag;
254 END IF;
255
256 END IF;
257
258 IF PG_DEBUG in ('Y', 'C') THEN
259 arp_util.debug('Activity_application: ' || 'Default_activity_info return status :'||l_def_return_status);
260 arp_util.debug('Activity_application: ' || 'Default_refund_attributes return status :'||l_dft_ref_return_status);
261 END IF;
262
263 ar_cm_app_val_pvt.validate_activity_app
264 ( p_receivables_trx_id => p_receivables_trx_id,
265 p_applied_ps_id => l_applied_ps_id,
266 p_customer_trx_id => l_customer_trx_id,
267 p_cm_gl_date => l_cm_gl_date,
268 p_cm_unapp_amount => l_cm_unapp_amount,
269 p_trx_date => l_trx_date,
270 p_amount_applied => l_amount_applied,
271 p_apply_gl_date => l_apply_gl_date,
272 p_apply_date => l_apply_date,
273 p_cm_currency_code => l_cm_currency_code,
274 p_return_status => l_val_return_status,
275 p_chk_approval_limit_flag => p_chk_approval_limit_flag,
276 p_called_from => p_called_from
277 );
278
279 IF PG_DEBUG in ('Y', 'C') THEN
280 arp_util.debug('Activity_application: ' || 'Validation return status :'||l_val_return_status);
281 arp_util.debug('Activity_application: ' || '*****DUMPING ALL THE ENTITY HANDLER PARAMETERS ***');
282 arp_util.debug('Activity_application: ' || 'l_cm_unapp_amount : '||l_cm_unapp_amount);
283 arp_util.debug('Activity_application: ' || 'l_amount_applied : '||to_char(l_amount_applied));
284 arp_util.debug('Activity_application: ' || 'l_apply_date : '||to_char(l_apply_date,'DD-MON-YY'));
285 arp_util.debug('Activity_application: ' || 'l_apply_gl_date : '||to_char(l_apply_gl_date,'DD-MON-YY'));
286 END IF;
287
288 IF l_val_return_status <> FND_API.G_RET_STS_SUCCESS OR
289 l_def_return_status <> FND_API.G_RET_STS_SUCCESS OR
290 l_dft_ref_return_status <> FND_API.G_RET_STS_SUCCESS OR
291 l_id_conv_return_status <> FND_API.G_RET_STS_SUCCESS THEN
292
293 IF PG_DEBUG in ('Y', 'C') THEN
294 arp_util.debug('Activity_application: ' || 'Validation FAILED ');
295 END IF;
296 x_return_status := FND_API.G_RET_STS_ERROR;
297 END IF;
298
299 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
300 THEN
301
302 ROLLBACK TO Activity_app_PVT;
303
304 x_return_status := FND_API.G_RET_STS_ERROR ;
305
306 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
307 p_count => x_msg_count,
308 p_data => x_msg_data
309 );
310
311 IF PG_DEBUG in ('Y', 'C') THEN
312 arp_util.debug('Activity_application: ' || 'Error(s) occurred. Rolling back and setting status to ERROR');
313 END IF;
314 Return;
315 END IF;
316
317 -- CM payment schedule locked before calling entity handler
318 arp_ps_pkg.nowaitlock_p (p_ps_id => l_cm_ps_id);
319
320 --call the entity handler
321 BEGIN
322 arp_process_application.cm_activity_application (
323 p_cm_ps_id => l_cm_ps_id
324 , p_application_ps_id => l_applied_ps_id
325 , p_amount_applied => l_amount_applied
326 , p_apply_date => l_apply_date
327 , p_gl_date => l_apply_gl_date
328 , p_ussgl_transaction_code => p_ussgl_transaction_code
329 , p_attribute_category=> p_attribute_rec.attribute_category
330 , p_attribute1 => p_attribute_rec.attribute1
331 , p_attribute2 => p_attribute_rec.attribute2
332 , p_attribute3 => p_attribute_rec.attribute3
333 , p_attribute4 => p_attribute_rec.attribute4
334 , p_attribute5 => p_attribute_rec.attribute5
335 , p_attribute6 => p_attribute_rec.attribute6
336 , p_attribute7 => p_attribute_rec.attribute7
337 , p_attribute8 => p_attribute_rec.attribute8
338 , p_attribute9 => p_attribute_rec.attribute9
339 , p_attribute10 => p_attribute_rec.attribute10
340 , p_attribute11 => p_attribute_rec.attribute11
341 , p_attribute12 => p_attribute_rec.attribute12
342 , p_attribute13 => p_attribute_rec.attribute13
343 , p_attribute14 => p_attribute_rec.attribute14
344 , p_attribute15 => p_attribute_rec.attribute15
345 , p_global_attribute_category => p_global_attribute_rec.global_attribute_category
346 , p_global_attribute1 => p_global_attribute_rec.global_attribute1
347 , p_global_attribute2 => p_global_attribute_rec.global_attribute2
348 , p_global_attribute3 => p_global_attribute_rec.global_attribute3
349 , p_global_attribute4 => p_global_attribute_rec.global_attribute4
350 , p_global_attribute5 => p_global_attribute_rec.global_attribute5
351 , p_global_attribute6 => p_global_attribute_rec.global_attribute6
352 , p_global_attribute7 => p_global_attribute_rec.global_attribute7
353 , p_global_attribute8 => p_global_attribute_rec.global_attribute8
354 , p_global_attribute9 => p_global_attribute_rec.global_attribute9
355 , p_global_attribute10 => p_global_attribute_rec.global_attribute10
356 , p_global_attribute11 => p_global_attribute_rec.global_attribute11
357 , p_global_attribute12 => p_global_attribute_rec.global_attribute12
358 , p_global_attribute13 => p_global_attribute_rec.global_attribute13
359 , p_global_attribute14 => p_global_attribute_rec.global_attribute14
360 , p_global_attribute15 => p_global_attribute_rec.global_attribute15
361 , p_global_attribute16 => p_global_attribute_rec.global_attribute16
362 , p_global_attribute17 => p_global_attribute_rec.global_attribute17
363 , p_global_attribute18 => p_global_attribute_rec.global_attribute18
364 , p_global_attribute19 => p_global_attribute_rec.global_attribute19
365 , p_global_attribute20 => p_global_attribute_rec.global_attribute20
366 , p_receivables_trx_id => p_receivables_trx_id
367 , p_receipt_method_id => l_cm_receipt_method_id
368 , p_comments => p_comments
369 , p_module_name => 'CMAAPI'
370 , p_module_version => p_api_version
371 , p_application_ref_id => l_application_ref_id
372 , p_application_ref_num => l_application_ref_num
373 , p_out_rec_application_id => l_rec_app_id
374 , p_acctd_amount_applied_from => l_acctd_amount_applied_from
375 , p_acctd_amount_applied_to => l_acctd_amount_applied_to
376 , x_return_status => l_return_status
377 , x_msg_count => l_msg_count
378 , x_msg_data => l_msg_data);
379 EXCEPTION
380 WHEN OTHERS THEN
381
382 /*-------------------------------------------------------+
383 | Handle application errors that result from trapable |
384 | error conditions. The error messages have already |
385 | been put on the error stack. |
386 +-------------------------------------------------------*/
387
388 IF (SQLCODE = -20001)
389 THEN
390 ROLLBACK TO Activity_app_PVT;
391
392 -- Display_Parameters;
393 x_return_status := FND_API.G_RET_STS_ERROR ;
394 FND_MESSAGE.SET_NAME ('AR','GENERIC_MESSAGE');
395 FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','ARP_PROCESS_APPLICATION.CM_ACTIVITY_APPLICATION : '||SQLERRM);
396 FND_MSG_PUB.Add;
397
398 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
399 p_count => x_msg_count,
400 p_data => x_msg_data
401 );
402 RETURN;
403 ELSE
404 RAISE;
405 END IF;
406
407 END;
408
409 /* Call AP API's to create payment request if refund */
410 IF p_applied_payment_schedule_id = -8 THEN
411 BEGIN
412 ar_refunds_pvt.create_refund
413 (p_receivable_application_id => l_rec_app_id
414 ,p_amount => l_amount_applied
415 ,p_currency_code => l_cm_currency_code
416 ,p_exchange_rate => l_exchange_rate
417 ,p_exchange_rate_type => l_exchange_rate_type
418 ,p_exchange_date => l_exchange_date
419 ,p_description => NULL
420 ,p_pay_group_lookup_code => p_pay_group_lookup_code
421 ,p_pay_alone_flag => l_pay_alone_flag
422 ,p_org_id => l_org_id
423 ,p_legal_entity_id => l_legal_entity_id
424 ,p_payment_method_code => l_payment_method_code
425 ,p_payment_reason_code => l_payment_reason_code
426 ,p_payment_reason_comments => p_payment_reason_comments
427 ,p_delivery_channel_code => l_delivery_channel_code
428 ,p_remittance_message1 => p_remittance_message1
429 ,p_remittance_message2 => p_remittance_message2
430 ,p_remittance_message3 => p_remittance_message3
431 ,p_party_id => l_party_id
432 ,p_party_site_id => l_party_site_id
433 ,p_bank_account_id => l_bank_account_id
434 ,p_called_from => 'CM_APPLICATION_API'
435 ,x_invoice_id => l_invoice_id
436 ,x_return_status => x_return_status
437 ,x_msg_count => x_msg_count
438 ,x_msg_data => x_msg_data );
439
440 /* 6865230 */
441 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
442 THEN
443
444 ROLLBACK TO Activity_app_PVT;
445
446 x_return_status := FND_API.G_RET_STS_ERROR ;
447
448 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
449 p_count => x_msg_count,
450 p_data => x_msg_data
451 );
452
453 IF PG_DEBUG in ('Y', 'C') THEN
454 arp_util.debug('create_refund: ' || 'Error(s) occurred. Rolling back and setting status to ERROR');
455 END IF;
456 Return;
457 END IF;
458
459 l_application_ref_id := l_invoice_id;
460 l_application_ref_num := l_invoice_id;
461
462 EXCEPTION
463 WHEN OTHERS THEN
464
465 /*-------------------------------------------------------+
466 | Handle application errors that result from trapable |
467 | error conditions. The error messages have already |
468 | been put on the error stack. |
469 +-------------------------------------------------------*/
470
471 IF (SQLCODE = -20001)
472 THEN
473 ROLLBACK TO Activity_app_PVT;
474
475 -- Display_Parameters;
476 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
477 FND_MESSAGE.SET_NAME ('AR','GENERIC_MESSAGE');
478 FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','AR_REFUNDS_PVT.Create_Refund : '||SQLERRM);
479 FND_MSG_PUB.Add;
480
481 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
482 p_count => x_msg_count,
483 p_data => x_msg_data
484 );
485 RETURN;
486 ELSE
487 RAISE;
488 END IF;
489 END;
490 END IF;
491
492 p_receivable_application_id := l_rec_app_id;
493 p_application_ref_type := l_application_ref_type;
494 p_application_ref_id := l_application_ref_id;
495 p_application_ref_num := l_application_ref_num;
496
497 /*--------------------------------+
498 | Standard check of p_commit |
499 +--------------------------------*/
500
501 IF FND_API.To_Boolean( p_commit )
502 THEN
503 IF PG_DEBUG in ('Y', 'C') THEN
504 arp_util.debug('Activity_application: ' || 'committing');
505 END IF;
506 Commit;
507 END IF;
508 IF PG_DEBUG in ('Y', 'C') THEN
509 arp_util.debug('ar_cm_application_pub.Activity_application()- ');
510 END IF;
511 EXCEPTION
512 WHEN FND_API.G_EXC_ERROR THEN
513
514 IF PG_DEBUG in ('Y', 'C') THEN
515 arp_util.debug('Activity_application: ' || SQLCODE, G_MSG_ERROR);
516 arp_util.debug('Activity_application: ' || SQLERRM, G_MSG_ERROR);
517 END IF;
518
519 ROLLBACK TO Activity_app_PVT;
520 x_return_status := FND_API.G_RET_STS_ERROR ;
521
522 -- Display_Parameters;
523
524 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
525 p_count => x_msg_count,
526 p_data => x_msg_data
527 );
528
529 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
530
531 IF PG_DEBUG in ('Y', 'C') THEN
532 arp_util.debug('Activity_application: ' || SQLERRM, G_MSG_ERROR);
533 END IF;
534 ROLLBACK TO Activity_app_PVT;
535 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
536
537 -- Display_Parameters;
538
539 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
540 p_count => x_msg_count,
541 p_data => x_msg_data
542 );
543
544 WHEN OTHERS THEN
545
546 /*-------------------------------------------------------+
547 | Handle application errors that result from trapable |
548 | error conditions. The error messages have already |
549 | been put on the error stack. |
550 +-------------------------------------------------------*/
551
552 IF (SQLCODE = -20001)
553 THEN
554
555 ROLLBACK TO Activity_app_PVT;
556
557 --If only one error message on the stack,
558 --retrive it
559
560 x_return_status := FND_API.G_RET_STS_ERROR ;
561 FND_MESSAGE.SET_NAME ('AR','GENERIC_MESSAGE');
562 FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','ACTIVITY_APPLICATION : '||SQLERRM);
563 FND_MSG_PUB.Add;
564
565 --If only one error message on the stack,
566 --retrive it
567
568 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
569 p_count => x_msg_count,
570 p_data => x_msg_data
571 );
572
573 RETURN;
574
575 ELSE
576 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
577 FND_MESSAGE.SET_NAME ('AR','GENERIC_MESSAGE');
578 FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','ACTIVITY_APPLICATION : '||SQLERRM);
579 FND_MSG_PUB.Add;
580 END IF;
581
582 IF PG_DEBUG in ('Y', 'C') THEN
583 arp_util.debug('Activity_application: ' || SQLCODE, G_MSG_ERROR);
584 arp_util.debug('Activity_application: ' || SQLERRM, G_MSG_ERROR);
585 END IF;
586
587 ROLLBACK TO Activity_app_PVT;
588
589 IF FND_MSG_PUB.Check_Msg_Level
590 THEN
591 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,
592 l_api_name
593 );
594 END IF;
595
596 -- Display_Parameters;
597
598 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
599 p_count => x_msg_count,
600 p_data => x_msg_data
601 );
602 END Activity_application;
603
604
605 PROCEDURE Activity_unapplication(
606 -- Standard API parameters.
607 p_api_version IN NUMBER,
608 p_init_msg_list IN VARCHAR2,
609 p_commit IN VARCHAR2,
610 p_validation_level IN NUMBER,
611 x_return_status OUT NOCOPY VARCHAR2 ,
612 x_msg_count OUT NOCOPY NUMBER ,
613 x_msg_data OUT NOCOPY VARCHAR2 ,
614 -- *** Credit Memo Info. parameters *****
615 p_customer_trx_id IN ra_customer_trx.customer_trx_id%TYPE,
616 p_receivable_application_id IN ar_receivable_applications.receivable_application_id%TYPE,
617 p_reversal_gl_date IN ar_receivable_applications.reversal_gl_date%TYPE,
618 p_called_from IN VARCHAR2,
619 p_org_id IN NUMBER
620 ) IS
621 l_api_name CONSTANT VARCHAR2(20) := 'Activity_unapp';
622 l_api_version CONSTANT NUMBER := 1.0;
623 l_customer_trx_id NUMBER;
624 l_receivable_application_id NUMBER;
625 l_cm_gl_date DATE;
626 l_reversal_gl_date DATE;
627 l_apply_gl_date DATE;
628 l_receipt_gl_date DATE;
629 l_id_return_status VARCHAR2(1);
630 l_def_return_status VARCHAR2(1);
631 l_val_return_status VARCHAR2(1);
632 l_cm_unapp_amt NUMBER;
633 l_cm_ps_id NUMBER;
634 l_org_id NUMBER;
635 l_org_return_status VARCHAR2(1);
636 l_refund_return_status VARCHAR2(1);
637 l_applied_ps_id ar_payment_schedules.payment_schedule_id%TYPE;
638 l_application_ref_id ar_receivable_applications.application_ref_id%TYPE;
639
640 BEGIN
641 /*------------------------------------+
642 | Standard start of API savepoint |
643 +------------------------------------*/
644
645 SAVEPOINT Activity_unapplication_PVT;
646
647 /*--------------------------------------------------+
648 | Standard call to check for call compatibility |
649 +--------------------------------------------------*/
650
651 IF NOT FND_API.Compatible_API_Call(
652 l_api_version,
653 p_api_version,
654 l_api_name,
655 G_PKG_NAME
656 )
657 THEN
658 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
659 END IF;
660
661 /*--------------------------------------------------------------+
662 | Initialize message list if p_init_msg_list is set to TRUE |
663 +--------------------------------------------------------------*/
664
665 IF FND_API.to_Boolean( p_init_msg_list )
666 THEN
667 FND_MSG_PUB.initialize;
668 END IF;
669
670 IF PG_DEBUG in ('Y', 'C') THEN
671 arp_util.debug('ar_cm_application_pub.activity_unapplication()+ ');
672 END IF;
673
674 /*-------------------------------------------------+
675 | Initialize SOB/org dependent variables |
676 +-------------------------------------------------*/
677 arp_global.init_global;
678 arp_standard.init_standard;
679
680 /*-----------------------------------------+
681 | Initialize return status to SUCCESS |
682 +-----------------------------------------*/
683
684 x_return_status := FND_API.G_RET_STS_SUCCESS;
685
686 l_org_id := p_org_id;
687 l_org_return_status := FND_API.G_RET_STS_SUCCESS;
688 ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
689 p_return_status =>l_org_return_status);
690 IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
691 x_return_status := FND_API.G_RET_STS_ERROR;
692 END IF;
693 /*---------------------------------------------+
694 | ========== Start of API Body ========== |
695 +---------------------------------------------*/
696
697
698 --Assign IN parameter values to local variables
699 --which are also used as assignment targets.
700
701 l_customer_trx_id := p_customer_trx_id;
702 l_receivable_application_id := p_receivable_application_id;
703 l_reversal_gl_date := trunc(p_reversal_gl_date);
704
705
706 /*------------------------------------------------+
707 | Derive the IDs for the entered values. |
708 | If both the values and the IDs are specified, |
709 | the IDs supercede the values |
710 +------------------------------------------------*/
711
712 ar_cm_app_lib_pvt.derive_activity_unapp_ids(
713 NULL ,
714 l_customer_trx_id ,
715 l_receivable_application_id ,
716 l_apply_gl_date ,
717 l_id_return_status
718 );
719 ar_cm_app_lib_pvt.default_unapp_activity_info(
720 l_receivable_application_id ,
721 l_apply_gl_date ,
722 l_customer_trx_id ,
723 l_reversal_gl_date ,
724 l_cm_gl_date,
725 l_cm_ps_id,
726 l_cm_unapp_amt,
727 l_def_return_status
728 );
729
730 ar_cm_app_val_pvt.validate_unapp_activity(
731 l_cm_gl_date,
732 l_receivable_application_id,
733 l_reversal_gl_date,
734 l_apply_gl_date,
735 l_cm_unapp_amt,
736 l_val_return_status);
737
738 IF PG_DEBUG in ('Y', 'C') THEN
739 arp_util.debug('Activity_Unapplication: ' || 'validation return status :'||l_val_return_status);
740 END IF;
741
742 /* Refunds - check for refund and cancel if refund application */
743 SELECT applied_payment_schedule_id, application_ref_id
744 INTO l_applied_ps_id, l_application_ref_id
745 FROM ar_receivable_applications
746 WHERE receivable_application_id = l_receivable_application_id;
747
748 IF (l_applied_ps_id = -8 AND p_called_from <> 'AR_REFUNDS_GRP') THEN
749 ar_refunds_pvt.cancel_refund(
750 p_application_ref_id => l_application_ref_id
751 , p_gl_date => l_reversal_gl_date
752 , x_return_status => l_refund_return_status
753 , x_msg_count => x_msg_count
754 , x_msg_data => x_msg_data);
755 END IF;
756
757 IF l_val_return_status <> FND_API.G_RET_STS_SUCCESS OR
758 l_id_return_status <> FND_API.G_RET_STS_SUCCESS OR
759 l_refund_return_status <> FND_API.G_RET_STS_SUCCESS OR
760 l_def_return_status <> FND_API.G_RET_STS_SUCCESS THEN
761 x_return_status := FND_API.G_RET_STS_ERROR;
762 END IF;
763
764 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
765 THEN
766
767 ROLLBACK TO Activity_unapplication_PVT;
768
769 x_return_status := FND_API.G_RET_STS_ERROR ;
770
771 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
772 p_count => x_msg_count,
773 p_data => x_msg_data
774 );
775
776 IF PG_DEBUG in ('Y', 'C') THEN
777 arp_util.debug('Activity_Unapplication: ' || 'Error(s) occurred. Rolling back and setting status to ERROR');
778 END IF;
779 Return;
780 END IF;
781
782 IF PG_DEBUG in ('Y', 'C') THEN
783 arp_util.debug('Activity_Unapplication: ' || '*******DUMP THE INPUT PARAMETERS ********');
784 arp_util.debug('Activity_Unapplication: ' || 'l_receivable_application_id :'||to_char(l_receivable_application_id));
785 arp_util.debug('Activity_Unapplication: ' || 'l_reversal_gl_date :'||to_char(l_reversal_gl_date,'DD-MON-YY'));
786 END IF;
787
788 -- CM payment schedule locked before calling entity handler
789 arp_ps_pkg.nowaitlock_p (p_ps_id => l_cm_ps_id);
790
791 --call the entity handler.
792 BEGIN
793 arp_process_application.reverse_cm_app(
794 l_receivable_application_id,
795 -8,
796 l_reversal_gl_date,
797 trunc(sysdate),
798 'CMAAPI',
799 p_api_version,
800 p_called_from);
801 EXCEPTION
802 WHEN OTHERS THEN
803
804 /*-------------------------------------------------------+
805 | Handle application errors that result from trapable |
806 | error conditions. The error messages have already |
807 | been put on the error stack. |
808 +-------------------------------------------------------*/
809
810 IF (SQLCODE = -20001)
811 THEN
812 ROLLBACK TO Activity_unapplication_PVT;
813
814 -- Display_Parameters;
815 x_return_status := FND_API.G_RET_STS_ERROR ;
816 FND_MESSAGE.SET_NAME ('AR','GENERIC_MESSAGE');
817 FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','ARP_PROCESS_APPLICATION.REVERSE : '||SQLERRM);
818 FND_MSG_PUB.Add;
819
820 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
821 p_count => x_msg_count,
822 p_data => x_msg_data
823 );
824 RETURN;
825 ELSE
826 RAISE;
827 END IF;
828 END;
829
830 /*--------------------------------+
831 | Standard check of p_commit |
832 +--------------------------------*/
833
834 IF FND_API.To_Boolean( p_commit )
835 THEN
836 IF PG_DEBUG in ('Y', 'C') THEN
837 arp_util.debug('Activity_Unapplication: ' || 'committing');
838 END IF;
839 Commit;
840 END IF;
841
842 IF PG_DEBUG in ('Y', 'C') THEN
843 arp_util.debug('ar_cm_application_pub.Activity_unapplication()- ');
844 END IF;
845
846
847 EXCEPTION
848 WHEN FND_API.G_EXC_ERROR THEN
849
850 IF PG_DEBUG in ('Y', 'C') THEN
851 arp_util.debug('Activity_Unapplication: ' || SQLCODE, G_MSG_ERROR);
852 arp_util.debug('Activity_Unapplication: ' || SQLERRM, G_MSG_ERROR);
853 END IF;
854
855 ROLLBACK TO Activity_unapplication_PVT;
856 x_return_status := FND_API.G_RET_STS_ERROR ;
857
858 -- Display_Parameters;
859
860 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
861 p_count => x_msg_count,
862 p_data => x_msg_data
863 );
864
865 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
866
867 IF PG_DEBUG in ('Y', 'C') THEN
868 arp_util.debug('Activity_Unapplication: ' || SQLERRM, G_MSG_ERROR);
869 END IF;
870 ROLLBACK TO Activity_unapplication_PVT;
871 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
872
873 -- Display_Parameters;
874
875 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
876 p_count => x_msg_count,
877 p_data => x_msg_data
878 );
879
880 WHEN OTHERS THEN
881
882 /*-------------------------------------------------------+
883 | Handle application errors that result from trapable |
884 | error conditions. The error messages have already |
885 | been put on the error stack. |
886 +-------------------------------------------------------*/
887
888 IF (SQLCODE = -20001)
889 THEN
890
891 ROLLBACK TO Activity_unapplication_PVT;
892
893 x_return_status := FND_API.G_RET_STS_ERROR ;
894 FND_MESSAGE.SET_NAME ('AR','GENERIC_MESSAGE');
895 FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','ACTIVITY_UNAPPLICATION : '||SQLERRM);
896 FND_MSG_PUB.Add;
897
898 --If only one error message on the stack,
899 --retrive it
900 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
901 p_count => x_msg_count,
902 p_data => x_msg_data
903 );
904
905 RETURN;
906
907 ELSE
908 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
909 FND_MESSAGE.SET_NAME ('AR','GENERIC_MESSAGE');
910 FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','ACTIVITY_UNAPPLICATION : '||SQLERRM);
911 FND_MSG_PUB.Add;
912 END IF;
913
914 IF PG_DEBUG in ('Y', 'C') THEN
915 arp_util.debug('Activity_Unapplication: ' || SQLCODE, G_MSG_ERROR);
916 arp_util.debug('Activity_Unapplication: ' || SQLERRM, G_MSG_ERROR);
917 END IF;
918
919 ROLLBACK TO Activity_unapplication_PVT;
920
921 IF FND_MSG_PUB.Check_Msg_Level
922 THEN
923 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,
924 l_api_name
925 );
926 END IF;
927
928 -- Display_Parameters;
929
930 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
931 p_count => x_msg_count,
932 p_data => x_msg_data
933 );
934 END Activity_unapplication;
935
936 END AR_CM_APPLICATION_PUB;