ORACLEEBSR12应收模块收款API研究.docx
《ORACLEEBSR12应收模块收款API研究.docx》由会员分享,可在线阅读,更多相关《ORACLEEBSR12应收模块收款API研究.docx(21页珍藏版)》请在冰点文库上搜索。
ORACLEEBSR12应收模块收款API研究
R12应收模块收款API研究
撰写人:
杜春阳
撰写日期:
2012年1月10日
最后修改日期:
2012年1月10日
版本:
1.0
文档控制
更改记录
日期
姓名
版本
变更参考
2011-01-10
杜春阳
1.0
无前期版本
审阅
姓名
职位
分发
编号.
名称
地点
1
2
1
2
文档控制2
参考文档4
文档说明
该文档主要介绍应收模块的收款功能相关API。
本文仅介绍了部分主要业务的API,对于其他业务请参阅下方ORACLE官方文档。
使用对象
开发人员
参考文档
●Metalink
OracleReceivables:
ReceiptsAPIOverview,Setup,SampleScriptsandTroubleshooting[ID1361075.1]
相关业务汇总
相关业务汇总
包名:
AR_RECEIPT_API_PUB。
黄色为本文介绍
编号
业务
过程名称
英文解释
1.
创建收款
CREATE_CASH
Createsasinglecashreceipt,asinthecaseofmanuallycreatedcashreceipts
2.
核销应收发票
APPLY
Appliesacashreceipttoaparticularinstallmentofadebititem.Theapplicationcanalsobeacrosscurrencyapplication.
3.
创建并同时核销发票
CREATE_AND_APPLY
Createsacashreceiptandappliesittoaspecifiedinstallmentofadebititeminonepass.Applicationwillfailifthereceiptcannotbecreated.
ThisAPIisasuper-setofCREATE_CASHandAPPLY.Itprovidesmoreinputparameterswhichallowtheusertohavemorecontroloverthetypeofreceiptandapplicationtocreate.Forexample,thisAPItakesinavalueforp_factor_discount_amount,whereasAPPLYAPIabovedoesnot.
4.
取消核销发票
UNAPPLY
Unappliestheapplicationofaparticularinstallmentofadebititemagainstthespecifiedcashreceipt.
5.
冲销收款
REVERSE
Reversesthespecifiedreceipt.
6
核销账户
APPLY_ON_ACCOUNT
Createsanon-accountapplicationforacashreceipt
7
撤销核销账户
UNAPPLY_ON_ACCOUNT
Unappliestheon-accountapplicationonthespecifiedreceipt.
8
核销活动
ACTIVITY_APPLICATION
Appliestoanactivity,suchasReceiptWrite-offorRefund.
9
创建杂项收款
CREATE_MISC
Createsasinglemiscellaneousreceipt.
10
核销其他账户活动
APPLY_OTHER_ACCOUNT
Appliestootheraccountactivities,suchasClaimInvestigation(forTradeManagementcustomersonly).
11
撤销核销其他账户
UNAPPLY_OTHER_ACCOUNT
Unappliesfromotheraccountactivities,suchasClaimInvestigation.
12
不懂
APPLY_OPEN_RECEIPT
Createsareceipt-to-receiptapplication(paymentnetting).
13
不懂
UNAPPLY_OPEN_RECEIPT
Unappliesareceipt-to-receiptapplication.
14
不懂
CREATE_APPLY_ON_ACC
Createsacashreceiptandanon-accountapplicationinonepass.Applicationwillfailifthereceiptcannotbecreated.
15
核销到发票行明细
APPLY_IN_DETAIL
Applyareceiptatinvoicelinelevel.
代码案例详解
创建收款(AR_RECEIPT_API_PUB.CREATE_CASH)
API描述
这个API一次可以创建一个收款,创建成功后,状态为未核销。
该API一次只能创建一个收款,无法创建收款批。
API代码详解
PROCEDURECreate_cash(
--StandardAPIparameters.
p_api_versionINNUMBER,
p_init_msg_listINVARCHAR2:
=FND_API.G_FALSE,
p_commitINVARCHAR2:
=FND_API.G_FALSE,
x_return_statusOUTNOCOPYVARCHAR2,
x_msg_countOUTNOCOPYNUMBER,
x_msg_dataOUTNOCOPYVARCHAR2,
--Receiptinfo.parameters
p_currency_codeINVARCHAR2DEFAULTNULL,
p_amountINNUMBERDEFAULTNULL,
p_receipt_numberINVARCHAR2DEFAULTNULL,
p_receipt_dateINDATEDEFAULTNULL,
p_gl_dateINDATEDEFAULTNULL,
p_customer_numberINVARCHAR2DEFAULTNULL,
p_receipt_method_idINNUMBERDEFAULTNULL,
p_cr_idOUTNOCOPYNUMBER
)
以上并非所有参数,仅包含主要参数,其他参数请自行研究。
1.x_return_statusAPI返回状态
2.x_msg_countAPI返回信息数量
3.x_msg_dataAPI返回消息内容
4.p_currency_code币种
值来源
selectcurrency_codefromfnd_currencies;
5.p_receipt_number收款编号
6.p_receipt_date收款日期
7.p_gl_date入账日期
8.p_customer_number客户编号
值来源
selectb.account_number
fromhz_partiesa,
hz_cust_accountsb
wherea.party_name='&Customer_name'
anda.party_id=b.party_id
9.p_receipt_method_id收款方法
值来源
selectreceipt_method_idfromar_receipt_methods;
10.p_cr_id返回的收款ID
11.API成功后,将会把数据提交到AR_RECEIVABLE_APPLICATIONS_ALL中
API代码实例
DECLARE
l_return_statusVARCHAR2
(1);
l_msg_countNUMBER;
l_msg_dataVARCHAR2(240);
l_cash_receipt_idNUMBER;
p_countnumber:
=0;
BEGIN
--1)Settheapplicationscontext
mo_global.init('AR');--初始化MOAC
mo_global.set_policy_context('S','261');--261是OU的ID
fnd_global.apps_initialize(2125,51260,280,0);--2125是USER_ID,51260是responsibility_id,280是application_id
--2)CalltheAPI
AR_RECEIPT_API_PUB.CREATE_CASH
(p_api_version=>1.0,
p_init_msg_list=>FND_API.G_TRUE,
p_commit=>FND_API.G_TRUE,
p_validation_level=>FND_API.G_VALID_LEVEL_FULL,
x_return_status=>l_return_status,
x_msg_count=>l_msg_count,
x_msg_data=>l_msg_data,
p_currency_code=>'CNY',
p_amount=>10000,
p_receipt_number=>'TEST20120120',
p_receipt_date=>'20-01-2012',
p_gl_date=>'20-01-2012',
p_customer_number=>1945,
p_receipt_method_id=>2004,
p_cr_id=>l_cash_receipt_id);
--3)ReviewtheAPIoutput
dbms_output.put_line('Status'||l_return_status);
dbms_output.put_line('CashReceiptid'||l_cash_receipt_id);
dbms_output.put_line('Messagecount'||l_msg_count);
ifl_msg_count=1Then
dbms_output.put_line('l_msg_data'||l_msg_data);
elsifl_msg_count>1Then
loop
p_count:
=p_count+1;
l_msg_data:
=FND_MSG_PUB.Get(FND_MSG_PUB.G_NEXT,FND_API.G_FALSE);
ifl_msg_dataisNULLthen
exit;
endif;
dbms_output.put_line('Message'||p_count||'.'||l_msg_data);
endloop;
endif;
END;
核销收款(AR_RECEIPT_API_PUB.APPLY)
API描述
改API一次可以核销一张发票,如果需要核销多张发票,可以循环调用。
API代码详解
AR_RECEIPT_API_PUB.APPLY
(p_api_versionINNUMBER,,
p_init_msg_listINVARCHAR2:
=FND_API.G_FALSE,
p_commitINVARCHAR2:
=FND_API.G_FALSE,
p_validation_levelINNUMBER:
=FND_API.G_VALID_LEVEL_FULL,
p_cash_receipt_idINar_cash_receipts.cash_receipt_id%TYPEDEFAULTNULL,,
p_customer_trx_idINra_customer_trx.customer_trx_id%TYPEDEFAULTNULL,
p_amount_appliedINar_receivable_applications.amount_applied%TYPEDEFAULTNULL,
x_return_statusOUTNOCOPYVARCHAR2,
x_msg_countOUTNOCOPYNUMBER,
x_msg_data=>OUTNOCOPYVARCHAR2);
以上并非所有参数,仅包含主要参数,其他参数请自行研究。
1.p_cash_receipt_id收款ID
值来源
selectcash_receipt_id
fromar_cash_receipts_all
whereorg_id=&org_id;
2.p_customer_trx_id应收发票ID
值来源
selectcustomer_trx_id
fromra_customer_trx_all
whereorg_id=&org_id;
3.p_amount_applied核销金额,非必填,不填系统默认全部或者可核销金额,可不使用这个参数。
4.x_return_statusAPI返回状态
5.x_msg_countAPI返回信息数量
6.x_msg_dataAPI返回消息内容
7.API成功后,将会把数据提交到AR_RECEIVABLE_APPLICATIONS_ALL中
API代码实例
DECLARE
l_return_statusvarchar2
(1);
l_msg_countnumber;
l_msg_datavarchar2(240);
p_countnumber:
=0;
BEGIN
--1)Settheapplicationscontext
mo_global.init('AR');
mo_global.set_policy_context('S','261');
fnd_global.apps_initialize(2125,51260,280,0);
--2)CalltheAPI
AR_RECEIPT_API_PUB.APPLY
(p_api_version=>1.0,
p_init_msg_list=>FND_API.G_TRUE,
p_commit=>FND_API.G_TRUE,
p_validation_level=>FND_API.G_VALID_LEVEL_FULL,
p_cash_receipt_id=>2565,
p_customer_trx_id=>5237,
x_return_status=>l_return_status,
x_msg_count=>l_msg_count,
x_msg_data=>l_msg_data);
--3)ReviewtheAPIoutput
dbms_output.put_line('Status'||l_return_status);
dbms_output.put_line('Messagecount'||l_msg_count);
ifl_msg_count=1Then
dbms_output.put_line('l_msg_data'||l_msg_data);
elsifl_msg_count>1Then
loop
p_count:
=p_count+1;
l_msg_data:
=FND_MSG_PUB.Get(FND_MSG_PUB.G_NEXT,FND_API.G_FALSE);
ifl_msg_dataisNULLThen
exit;
endif;
dbms_output.put_line('Message'||p_count||'.'||l_msg_data);
endloop;
endif;
end;
创建并核销收款(AR_RECEIPT_API_PUB.CREATE_AND_APPLY)
API描述
此API可以同时创建收款并且核销。
相当于同时调用了上面2个过程。
但是一次只能创建一个收款和核销第一个应收发票。
如果要核销多个应收发票,还是要循环调用AR_RECEIPT_API_PUB.APPLY。
API详解
AR_RECEIPT_API_PUB.create_and_apply
(p_api_versionINNUMBER,
p_init_msg_listINVARCHAR2:
=FND_API.G_FALSE,
p_commitINVARCHAR2:
=FND_API.G_FALSE,
p_validation_levelINNUMBER:
=FND_API.G_VALID_LEVEL_FULL,
x_return_statusOUTNOCOPYVARCHAR2,
x_msg_countOUTNOCOPYNUMBER,
x_msg_dataOUTNOCOPYVARCHAR2,
p_amountINar_cash_receipts.amount%TYPEDEFAULTNULL,,
p_receipt_numberINar_cash_receipts.receipt_number%TYPEDEFAULTNULL,
p_receipt_dateINar_cash_receipts.receipt_date%TYPEDEFAULTNULL,
p_gl_dateINar_cash_receipt_history.gl_date%TYPEDEFAULTNULL,
p_customer_numberINhz_cust_accounts.account_number%TYPEDEFAULTNULL,
p_receipt_method_idINar_cash_receipts.receipt_method_id%TYPEDEFAULTNULL,
p_customer_trx_idINra_customer_trx.customer_trx_id%TYPEDEFAULTNULL,
p_cr_id=>OUTNOCOPYar_cash_receipts.cash_receipt_id%TYPE);
以上并非所有参数,仅包含主要参数,其他参数请自行研究。
该API的参数就是上两个参数的和。
这里不做解释。
API实例
DECLARE
l_return_statusVARCHAR2
(1);
l_msg_countNUMBER;
l_msg_dataVARCHAR2(240);
l_cash_receipt_idNUMBER;
p_countnumber:
=0;
BEGIN
--1)Settheapplicationscontext
mo_global.init('AR');
mo_global.set_policy_context('S','261');
fnd_global.apps_initialize(2125,51260,280,0);
AR_RECEIPT_API_PUB.create_and_apply
(p_api_version=>1.0,
p_init_msg_list=>FND_API.G_TRUE,
p_commit=>FND_API.G_TRUE,
p_validation_level=>FND_API.G_VALID_LEVEL_FULL,
x_return_status=>l_return_status,
x_msg_count=>l_msg_count,
x_msg_data=>l_msg_data,
p_amount=>9999.00,
p_receipt_number=>'TEST20120120-1',
p_receipt_date=>'20-01-2012',
p_gl_date=>'20-01-2012',
p_customer_number=>1945,
p_receipt_method_id=>2004,
p_customer_trx_id=>'5238',
p_cr_id=>l_cash_receipt_id);
--3)ReviewtheAPIoutput
dbms_output.put_line('Status'||l_return_status);
dbms_output.put_line('Messagecount'||l_msg_count);
dbms_output.put_line('CashReceiptID'||l_cash_receipt_id);
ifl_msg_count=1Then
dbms_output.put_line('l_msg_data'||l_msg_data);
elsifl_msg_count>1Then
loop
p_count:
=p_count+1;
l_msg_data:
=FND_MSG_PUB.Get(FND_MSG_PUB.G_NEXT,FND_API.G_FALSE);
ifl_msg_dataisNULLThen
exit;
endif;
dbms_output.put_line('Message'||p_count||'.'||l_msg_data);
endloop