1. 程式人生 > >AR-API-詳解EBS介面開發之應收款處理2

AR-API-詳解EBS介面開發之應收款處理2

(一)應收款常用標準表簡介

1.1   常用標準表

如下表中列出了與應收款處理相關的表和說明:

表名

說明

其他資訊

AR_BATCHES_ALL

AR收款批表

AR_BATCH_SOURCES_ALL

AR收款型別表

對應檢視

AR_CASH_RECEIPTS_ALL

AR收款表

對應檢視

AR_CASH_RECEIPT_HISTORY_ALL

AR收款歷史表

對應檢視

AR_MISC_CASH_DISTRIBUTIONS_ALL

AR雜項收款分配表

對應檢視

AP_BANK_ACCOUNTS_ALL

AR匯款銀行

對應檢視

AR_RECEIPT_METHODS

AR收款分類

對應檢視

1.表中欄位的大體介紹

1.3   說明

這裡只列出了應收款處理相關的大多數常用表。還有一些不經常用到的沒有涉及,具體可以參考oracle網站上的

二)應收款處理API

2.1   簡介

建立收款

AR_RECEIPT_API_PUB.CREATE_CASH

核銷應收INVOICE

AR_RECEIPT_API_PUB.APPLY

建立並同時核銷INVOICE

AR_RECEIPT_A

PI_PUB.CREATE_AND_APPLY

取消核銷INVOICE

AR_RECEIPT_API_PUB. UNAPPLY

沖銷收款

AR_RECEIPT_API_PUB. REVERSE

核銷賬戶

AR_RECEIPT_API_PUB. APPLY_ON_ACCOUNT

撤銷核銷賬戶

AR_RECEIPT_API_PUB. UNAPPLY_ON_ACCOUNT

核銷活動

AR_RECEIPT_API_PUB. ACTIVITY_APPLICATION

建立雜項收款

AR_RECEIPT_API_PUB. CREATE_MISC

核銷其他賬戶活動

AR_RECEIPT_API_PUB

. APPLY_OTHER_ACCOUNT

撤銷核銷其他賬戶

AR_RECEIPT_API_PUB. UNAPPLY_OTHER_ACCOUNT

核銷現金收款沖銷其他收款

AR_RECEIPT_API_PUB. APPLY_OPEN_RECEIPT

取消核銷現金收款沖銷其他收款

AR_RECEIPT_API_PUB. UNAPPLY_OPEN_RECEIPT

AR_RECEIPT_API_PUB. CREATE_APPLY_ON_ACC

核銷到INVOICE行明細

AR_RECEIPT_API_PUB. APPLY_IN_DETAIL

(三)應收款處理API

3.1   AR_RECEIPT_API_PUB. Create_cash

這個API一次可以建立一個收款,建立成功後,狀態為未核銷。

API一次只能建立一個收款,無法建立收款批。

AR_RECEIPT_API_PUB. PROCEDURE Create_cash(
           -- Standard API parameters.
                 p_api_version      IN  NUMBER,
                 p_init_msg_list    IN  VARCHAR2 := FND_API.G_FALSE,
                 p_commit           IN  VARCHAR2 := FND_API.G_FALSE,
                 x_return_status    OUT NOCOPY VARCHAR2,
                 x_msg_count        OUT NOCOPY NUMBER,
                 x_msg_data         OUT NOCOPY VARCHAR2,
                 -- Receipt info. parameters
                 p_currency_code           IN  VARCHAR2 DEFAULT NULL,
                 p_amount                  IN  NUMBER   DEFAULT NULL,
                 p_receipt_number          IN  VARCHAR2 DEFAULT NULL,
                 p_receipt_date            IN  DATE     DEFAULT NULL,
                 p_gl_date                 IN  DATE     DEFAULT NULL,
                 p_customer_number         IN VARCHAR2  DEFAULT NULL,
                 p_receipt_method_id       IN  NUMBER   DEFAULT NULL,
                 p_cr_id  OUT NOCOPY NUMBER
                  )


僅包含主要引數

x_return_status    API返回狀態
x_msg_count        API返回資訊數量
x_msg_data         API返回訊息內容
p_currency_code    幣種
值來源 
select currency_code from fnd_currencies;
p_receipt_number    收款編號
p_receipt_date      收款日期
p_gl_date           入賬日期
p_customer_number   客戶編號
值來源
select b.account_number
from hz_parties a,
hz_cust_accounts b
where a.party_name = '&Customer_name'
and a.party_id = b.party_id
p_receipt_method_id  收款方法
值來源
select receipt_method_id from ar_receipt_methods;

p_cr_id 返回的收款ID
API成功後,將會把資料提交到AR_RECEIVABLE_APPLICATIONS_ALL中 

API程式碼例項

DECLARE

   l_return_status VARCHAR2(1);
   l_msg_count NUMBER;
   l_msg_data VARCHAR2(240);
   l_cash_receipt_id NUMBER;
   p_count number := 0;

BEGIN

      -- 1) Set the applications context
   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) Call the API
    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) Review the API output
    dbms_output.put_line('Status ' || l_return_status);
    dbms_output.put_line('Cash Receipt id ' || l_cash_receipt_id );
    dbms_output.put_line('Message count ' || l_msg_count);

    if l_msg_count = 1 Then
       dbms_output.put_line('l_msg_data '||l_msg_data);
    elsif l_msg_count > 1 Then
       loop
          p_count := p_count + 1;
          l_msg_data := FND_MSG_PUB.Get(FND_MSG_PUB.G_NEXT,FND_API.G_FALSE);
          if l_msg_data is NULL then 
              exit;
          end if;
          dbms_output.put_line('Message ' || p_count ||'. '||l_msg_data);
       end loop;
    end if;  
END; 

3.2   AR_RECEIPT_API_PUB.APPLY

API描述

API一次可以核銷一張INVOICE,如果需要核銷多張INVOICE,可以迴圈呼叫。

API程式碼詳解

AR_RECEIPT_API_PUB.APPLY

   ( p_api_version IN  NUMBER,,

     p_init_msg_list IN  VARCHAR2 := FND_API.G_FALSE,

     p_commit IN  VARCHAR2 := FND_API.G_FALSE,

     p_validation_level IN  NUMBER  := FND_API.G_VALID_LEVEL_FULL,

     p_cash_receipt_id IN ar_cash_receipts.cash_receipt_id%TYPEDEFAULT NULL,,

     p_customer_trx_id INra_customer_trx.customer_trx_id%TYPE DEFAULT NULL,

     p_amount_applied  INar_receivable_applications.amount_applied%TYPE DEFAULT NULL,

     x_return_status OUT NOCOPY VARCHAR2,

     x_msg_count OUT NOCOPY NUMBER,

x_msg_data => OUTNOCOPY VARCHAR2);