54: *=======================================================================*/
55: PROCEDURE Create_Prepayment(
56: -- Standard API parameters.
57: p_api_version IN NUMBER,
58: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
59: p_commit IN VARCHAR2 := FND_API.G_FALSE,
60: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
61: x_return_status OUT NOCOPY VARCHAR2,
62: x_msg_count OUT NOCOPY NUMBER,
55: PROCEDURE Create_Prepayment(
56: -- Standard API parameters.
57: p_api_version IN NUMBER,
58: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
59: p_commit IN VARCHAR2 := FND_API.G_FALSE,
60: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
61: x_return_status OUT NOCOPY VARCHAR2,
62: x_msg_count OUT NOCOPY NUMBER,
63: x_msg_data OUT NOCOPY VARCHAR2,
56: -- Standard API parameters.
57: p_api_version IN NUMBER,
58: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
59: p_commit IN VARCHAR2 := FND_API.G_FALSE,
60: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
61: x_return_status OUT NOCOPY VARCHAR2,
62: x_msg_count OUT NOCOPY NUMBER,
63: x_msg_data OUT NOCOPY VARCHAR2,
64: -- Receipt info. parameters
134: p_payment_server_order_num IN OUT NOCOPY ar_cash_receipts.payment_server_order_num%TYPE,
135: p_approval_code IN OUT NOCOPY ar_cash_receipts.approval_code%TYPE,
136:
137: ---Bug 3220078 Change the parameter to TRUE
138: p_call_payment_processor IN VARCHAR2 DEFAULT FND_API.G_TRUE,
139:
140: p_payment_response_error_code OUT NOCOPY VARCHAR2,
141: -- OUT NOCOPY parameter for the Application
142: p_receivable_application_id OUT NOCOPY ar_receivable_applications.receivable_application_id%TYPE,
191: rct_info rct_info_cur%ROWTYPE;
192: l_cr_rec ar_cash_receipts_all%ROWTYPE;
193: l_org_type HR_ALL_ORGANIZATION_UNITS.TYPE%TYPE;
194: l_action VARCHAR2(80);
195: l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
196: l_msg_count NUMBER;
197: l_msg_data VARCHAR2(2000);
198: l_iby_msg_data VARCHAR2(2000);
199: l_vend_msg_data VARCHAR2(2000);
239: /*-----------------------------------------+
240: | Initialize return status to SUCCESS |
241: +-----------------------------------------*/
242:
243: x_return_status := FND_API.G_RET_STS_SUCCESS;
244:
245: /*--------------------------------------------------+
246: | Standard call to check for call compatibility |
247: +--------------------------------------------------*/
245: /*--------------------------------------------------+
246: | Standard call to check for call compatibility |
247: +--------------------------------------------------*/
248:
249: IF NOT FND_API.Compatible_API_Call(
250: l_api_version,
251: p_api_version,
252: l_api_name,
253: G_PKG_NAME
252: l_api_name,
253: G_PKG_NAME
254: )
255: THEN
256: x_return_status := FND_API.G_RET_STS_ERROR;
257: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
258: END IF;
259:
260: /*--------------------------------------------------------------+
253: G_PKG_NAME
254: )
255: THEN
256: x_return_status := FND_API.G_RET_STS_ERROR;
257: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
258: END IF;
259:
260: /*--------------------------------------------------------------+
261: | Initialize message list if p_init_msg_list is set to TRUE |
259:
260: /*--------------------------------------------------------------+
261: | Initialize message list if p_init_msg_list is set to TRUE |
262: +--------------------------------------------------------------*/
263: IF FND_API.to_Boolean( p_init_msg_list )
264: THEN
265: FND_MSG_PUB.initialize;
266: END IF;
267:
269:
270:
271: /* SSA change */
272: l_org_id := p_org_id;
273: l_org_return_status := FND_API.G_RET_STS_SUCCESS;
274: ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
275: p_return_status =>l_org_return_status);
276: IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
277: x_return_status := FND_API.G_RET_STS_ERROR;
272: l_org_id := p_org_id;
273: l_org_return_status := FND_API.G_RET_STS_SUCCESS;
274: ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
275: p_return_status =>l_org_return_status);
276: IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
277: x_return_status := FND_API.G_RET_STS_ERROR;
278: ELSE
279: ----Multiple prepayments allow payment types other than credit card
280: /*--------------------------------------------------------------------
273: l_org_return_status := FND_API.G_RET_STS_SUCCESS;
274: ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
275: p_return_status =>l_org_return_status);
276: IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
277: x_return_status := FND_API.G_RET_STS_ERROR;
278: ELSE
279: ----Multiple prepayments allow payment types other than credit card
280: /*--------------------------------------------------------------------
281: IF p_receipt_method_id is not null THEN
290: arp_util.debug('Create_Prepayment: ' || 'Prepayment only allowed for credit card');
291: END IF;
292: FND_MESSAGE.SET_NAME('AR','AR_RAPI_PREPAY_ONLYFOR_CC');
293: FND_MSG_PUB.Add;
294: x_return_status := FND_API.G_RET_STS_ERROR;
295: RETURN;
296: END;
297:
298: END IF;
307: arp_util.debug('Create_Prepayment: ' || 'For Prepayment, customer banks account details must be passed');
308: END IF;
309: FND_MESSAGE.SET_NAME('AR','AR_RAPI_CUS_BK_AC_2_INVALID');
310: FND_MSG_PUB.Add;
311: x_return_status := FND_API.G_RET_STS_ERROR;
312: RETURN;
313: END IF;
314:
315: */
321: --calling the internal create_cash routine
322: ar_receipt_api_pub.Create_Cash(
323: p_api_version => p_api_version,
324: p_init_msg_list => p_init_msg_list,
325: p_commit => FND_API.G_FALSE,
326: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
327: x_return_status => l_create_return_status,
328: x_msg_count => x_msg_count,
329: x_msg_data => x_msg_data,
322: ar_receipt_api_pub.Create_Cash(
323: p_api_version => p_api_version,
324: p_init_msg_list => p_init_msg_list,
325: p_commit => FND_API.G_FALSE,
326: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
327: x_return_status => l_create_return_status,
328: x_msg_count => x_msg_count,
329: x_msg_data => x_msg_data,
330: -- Receipt info. parameters
378:
379: --IF the receipt creation part returns no errors then
380: --call the application routine.
381:
382: IF l_create_return_status = FND_API.G_RET_STS_SUCCESS THEN
383:
384: IF x_msg_count = 1 THEN
385: /* If one message, like warning, then put this back on stack as the
386: Create routine must have removed it from the stack and put it on x_msg_data
403: arp_util.debug('Create_Prepayment: ' || 'Payment set id sequence generation failed'||sqlerrm);
404: END IF;
405: FND_MESSAGE.SET_NAME('AR','AR_RAPI_PREPAY_SEQ_FAILED');
406: FND_MSG_PUB.Add;
407: x_return_status := FND_API.G_RET_STS_ERROR;
408: RETURN;
409: END;
410: ELSE
411: l_payment_set_id := p_payment_set_id;
417: 'PREPAYMENT',
418: l_receivables_trx_id,
419: l_activity_return_status);
420:
421: IF l_activity_return_status <> FND_API.G_RET_STS_SUCCESS THEN
422: ROLLBACK TO Create_Prepayment_PVT;
423: x_return_status := l_activity_return_status;
424:
425: FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
421: IF l_activity_return_status <> FND_API.G_RET_STS_SUCCESS THEN
422: ROLLBACK TO Create_Prepayment_PVT;
423: x_return_status := l_activity_return_status;
424:
425: FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
426: p_count => x_msg_count,
427: p_data => x_msg_data);
428:
429: RETURN; -- exit back to caller
447:
448: FND_MESSAGE.set_name('AR', 'AR_PAY_PROCESS_INVALID_STATUS');
449: FND_MSG_PUB.Add;
450:
451: x_return_status := FND_API.G_RET_STS_ERROR; -- should never happen
452:
453: RETURN;
454: END IF;
455:
593: END IF;
594:
595: IBY_FNDCPT_TRXN_PUB.Create_Authorization(
596: p_api_version => 1.0,
597: p_init_msg_list => FND_API.G_TRUE,
598: x_return_status => l_return_status,
599: x_msg_count => l_msg_count,
600: x_msg_data => l_msg_data,
601: p_payer => l_payer_rec,
615: arp_standard.debug('x_msg_count :<' || l_msg_count || '>');
616:
617: FOR i IN 1..l_msg_count LOOP
618: arp_standard.debug('x_msg #' || TO_CHAR(i) || ' = <' ||
619: SUBSTR(fnd_msg_pub.get(p_msg_index => i,p_encoded => FND_API.G_FALSE),1,150) || '>');
620: END LOOP;
621:
622: IF PG_DEBUG in ('Y', 'C') THEN
623: arp_standard.debug( '-------------------------------------');
634: -- arp_standard.debug( 'l_authresult_rec.Risk_Result: ' || l_authresult_rec.Risk_Result);
635:
636: END IF;
637:
638: IF (l_return_status = FND_API.G_RET_STS_SUCCESS) THEN
639: -- update cash receipt with authorization code and
640:
641: ARP_CASH_RECEIPTS_PKG.set_to_dummy(l_cr_rec);
642: l_cr_rec.approval_code := l_authresult_rec.Auth_code ||'AR'||to_char(l_authresult_rec.Auth_Id);
666: arp_standard.debug( l_MSG_DATA);
667: END IF;
668: ELSIF(l_MSG_COUNT>1)THEN
669: LOOP
670: l_MSG_DATA:=FND_MSG_PUB.GET(p_encoded=>FND_API.G_FALSE);
671: IF (l_MSG_DATA IS NULL)THEN
672: EXIT;
673: END IF;
674: IF PG_DEBUG in ('Y', 'C') THEN
677: END LOOP;
678: END IF;
679: END IF;
680:
681: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
682: AND (NVL(p_called_from,'NONE') = 'IREC') then
683:
684: FND_MESSAGE.set_name('AR', 'AR_PAY_PROCESS_AUTHFAILURE');
685: FND_MSG_PUB.Add;
685: FND_MSG_PUB.Add;
686: x_return_status := l_return_status;
687: RETURN;
688:
689: ELSIF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
690:
691: arp_standard.debug('create_cash_126');
692: FND_MESSAGE.set_name('AR', 'AR_CC_AUTH_FAILED');
693: FND_MSG_PUB.Add;
721:
722: END IF;
723:
724:
725: FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
726: p_count => x_msg_count,
727: p_data => x_msg_data );
728:
729: x_return_status := l_return_status;
743:
744: ar_receipt_api_pub.Apply_other_account(
745: -- Standard API parameters.
746: p_api_version => p_api_version,
747: p_init_msg_list => FND_API.G_FALSE, --message stack is not initialized
748: p_commit => p_commit,
749: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
750: x_return_status => l_create_return_status,
751: x_msg_count => x_msg_count,
745: -- Standard API parameters.
746: p_api_version => p_api_version,
747: p_init_msg_list => FND_API.G_FALSE, --message stack is not initialized
748: p_commit => p_commit,
749: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
750: x_return_status => l_create_return_status,
751: x_msg_count => x_msg_count,
752: x_msg_data => x_msg_data,
753: p_receivable_application_id => p_receivable_application_id,
773: );
774:
775: --If the application fails then we need to rollback all the changes
776: --made in the create() routine also.
777: IF l_create_return_status <> FND_API.G_RET_STS_SUCCESS THEN
778: ROLLBACK TO Create_Prepayment_Pvt;
779: FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
780: p_count => x_msg_count,
781: p_data => x_msg_data);
775: --If the application fails then we need to rollback all the changes
776: --made in the create() routine also.
777: IF l_create_return_status <> FND_API.G_RET_STS_SUCCESS THEN
778: ROLLBACK TO Create_Prepayment_Pvt;
779: FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
780: p_count => x_msg_count,
781: p_data => x_msg_data);
782: x_return_status := l_create_return_status;
783: RETURN;
817:
818: IF PG_DEBUG in ('Y', 'C') THEN
819: arp_standard.debug('Create_Prepayment: ' || 'Checking p_call_payment_processor: ' || p_call_payment_processor);
820: END IF;
821: /* if (p_call_payment_processor = FND_API.G_TRUE) then
822:
823: Process_Credit_Card(
824: p_cash_receipt_id => l_cash_receipt_id,
825: p_payment_server_order_num =>
834: -- If the payment processor call fails, then we
835: -- need to rollback all the changes
836: -- made in the create() and apply() routines also.
837:
838: IF l_cc_return_status <> FND_API.G_RET_STS_SUCCESS THEN
839: x_return_status := l_cc_return_status;
840: p_payment_response_error_code := l_response_error_code;
841:
842: ROLLBACK TO Create_Prepayment_PVT;
839: x_return_status := l_cc_return_status;
840: p_payment_response_error_code := l_response_error_code;
841:
842: ROLLBACK TO Create_Prepayment_PVT;
843: FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
844: p_count => x_msg_count,
845: p_data => x_msg_data);
846:
847: RETURN; -- exit back to caller
846:
847: RETURN; -- exit back to caller
848: END IF;
849:
850: end if; -- if p_call_payment_processor = fnd_api.g_true */
851: END IF; --l_payment_type
852:
853: -- need to pass back cr_id
854: p_cr_id := l_cash_receipt_id;
863: /*--------------------------------+
864: | Standard check of p_commit |
865: +--------------------------------*/
866:
867: IF FND_API.To_Boolean( p_commit )
868: THEN
869: IF PG_DEBUG in ('Y', 'C') THEN
870: arp_util.debug('Create_Prepayments: ' || 'committing');
871: END IF;
871: END IF;
872: Commit;
873: END IF;
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: IF PG_DEBUG in ('Y', 'C') THEN
885: IF (SQLCODE = -20001) THEN
886: ROLLBACK TO Create_Prepayment_PVT;
887:
888: -- Display_Parameters;
889: x_return_status := FND_API.G_RET_STS_ERROR ;
890: FND_MESSAGE.SET_NAME ('AR','GENERIC_MESSAGE');
891: FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','CREATE_PREPAYMENT : '||SQLERRM);
892: FND_MSG_PUB.Add;
893:
890: FND_MESSAGE.SET_NAME ('AR','GENERIC_MESSAGE');
891: FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','CREATE_PREPAYMENT : '||SQLERRM);
892: FND_MSG_PUB.Add;
893:
894: FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
895: p_count => x_msg_count,
896: p_data => x_msg_data
897: );
898: RETURN;
896: p_data => x_msg_data
897: );
898: RETURN;
899: ELSE
900: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
901: FND_MESSAGE.SET_NAME ('AR','GENERIC_MESSAGE');
902: FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','CREATE_PREPAYMENT : '||SQLERRM);
903: FND_MSG_PUB.Add;
904: END IF;
916: );
917: END IF;
918:
919: -- Display_Parameters;
920: FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
921: p_count => x_msg_count,
922: p_data => x_msg_data);
923:
924:
977: BEGIN
978:
979: /* SSA change */
980: l_org_id := p_org_id;
981: l_org_return_status := FND_API.G_RET_STS_SUCCESS;
982: ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
983: p_return_status =>l_org_return_status);
984: IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
985: x_return_status := FND_API.G_RET_STS_ERROR;
980: l_org_id := p_org_id;
981: l_org_return_status := FND_API.G_RET_STS_SUCCESS;
982: ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
983: p_return_status =>l_org_return_status);
984: IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
985: x_return_status := FND_API.G_RET_STS_ERROR;
986: ELSE
987:
988: AR_PREPAYMENTS.get_installment(
981: l_org_return_status := FND_API.G_RET_STS_SUCCESS;
982: ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
983: p_return_status =>l_org_return_status);
984: IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
985: x_return_status := FND_API.G_RET_STS_ERROR;
986: ELSE
987:
988: AR_PREPAYMENTS.get_installment(
989: p_term_id,