Datafix_for_arinvoice_dist_move
AR發票行的會計分錄從一張發票遷移到另一張發票。
現象:美國公司的AR發票號:32001208 少了6條行會計分錄。
美國公司的AR發票號:32001220 多了6條行會計分錄。
這樣AR這邊的會計分錄不平,無法傳輸到總帳。AR無法關帳
原因:由于以前用戶發現AutoInvoice生成的發票有個Item:100A1256應該在發票32001208中,卻實際產生在了發票32001220中,于是做了Datafix,把發票32001220中的6條Item:100A1256行遷移到了發票:32001208中,但是沒有遷移相應的會計分錄。
分析:
1)AR發票的會計分錄存儲在表:RA_CUST_TRX_LINE_GL_DIST_ALL,這表記錄了發票頭ID 和 發票行ID, 原先的Datafix應該是更改了AR發票行表中的發票頭ID,別的應該沒有改,所以需要找到這6條會計分錄行,并更改其發票頭ID即可。
2)如果發票已經被核銷,那么由于核銷表AR_RECEIVABLE_APPLICATIONS_ALL中記錄了被核銷的發票頭ID和發票行ID,因此也可能出現錯誤。而核銷產生的會計分配信息表AR_CASH_BASIS_DISTS_ALL中沒有記錄發票頭ID和發票行ID, 如果兩張發票是同一客戶的那么也不受影響。
解決:使用Datafix把AR發票號:32001220 多出的6條行會計分錄遷移到發票:32001208中。
分析SQL:
?
?
--Check?發票頭:32001208SELECT?*?FROM?RA_CUSTOMER_TRX_ALL?WHERE?trx_number?=?'32001208'
#返回1條,?Customer_trx_id=4597?,??Org_id?=121,?Sold_to_customer_id?=1212
--Check?發票頭:32001220
SELECT?*?FROM?RA_CUSTOMER_TRX_ALL?WHERE?trx_number?=?'32001220'
#返回1條,?Customer_trx_id=4609?,??Org_id?=121,?Sold_to_customer_id?=1212
?
獲取用戶反映缺失會計分錄的發票行
Select?RCTL.*
From?RA_CUSTOMER_TRX_LINES_ALL?RCTL,
?????RA_CUSTOMER_TRX_ALL?RCT
Where?RCTL.customer_trx_id?=?RCT.customer_trx_id
AND?RCTL.Line_Number>=26?AND?rctl.line_number<=31
And?rct.trx_number?=?'32001208'
And?RCT.org_id?=?121
返回6行
?
customer_trx_id??CUSTOMER_TRX_LINE_ID
4597?????????????36907
4597?????????????36908
4597?????????????36909
4597?????????????36910
4597?????????????36931
4597?????????????36932
?
還要檢查核銷表中記錄的發票頭ID和發票行ID是否正確。也即:核銷表中
這6條記錄的的customer_trx_id?應該是4597?,而不應該是4609;?
?
我們用反證法來查一下有沒有錯誤的記錄:
Select?*
From?AR_RECEIVABLE_APPLICATIONS_ALL?araa
Where?araa.applied_customer_trx_id?=?4609
And?araa.applied_CUSTOMER_TRX_LINE_ID?In
??????(36907,?36908,?36909,?36910,?36931,?36932)
#返回結果:無記錄,所以不用考慮。
?
--獲取用戶反映的缺失的會計分錄
Select?RCTLG.*
From?RA_CUST_TRX_LINE_GL_DIST_ALL?RCTLG,?RA_CUSTOMER_TRX_LINES_ALL?RCTL,
?????RA_CUSTOMER_TRX_ALL?RCT
Where?RCTL.customer_trx_line_id?=?RCTLG.customer_trx_line_id
And?RCTL.customer_trx_id?=?RCT.customer_trx_id
AND?RCTL.Line_Number>=26?AND?rctl.line_number<=31
And?rct.trx_number?=?'32001208'
And?RCT.org_id?=?121
#返回6條?,?這6條記錄的customer_trx_id?均為4609,需要更改為4597
?
檢查RA_CUST_TRX_LINE_GL_DIST_ALL表上的Trigger
使用Toad工具->Database->Schema Browser->
選擇AR用戶->RA_CUST_TRX_LINE_GL_DIST_ALL表
有三個Trigger與Update有關:
APPS.AX_RA_CUST_TRX_LINE_GL_ARU2 (更新gl_date時觸發)
APPS.AX_RA_CUST_TRX_LINE_GL_ARU1 (更新posting_control_id時觸發)
APPS.ra_cust_trx_line_gl_dist_bri(任何字段更新都受影響)
查看其判斷邏輯后發現更改customer_trx_id不會引起什么問題,但是ra_cust_trx_line_gl_dist_bri會嘗試從上下文環境中獲取當前的更改是否由某個并發請求產生,因此需要模擬環境,否則會引起Trigger的不能處理例外,從而導致失敗。
登陸美國系統,進入AR,Examine ,得到user_id=1111, resp_id=50317, resp_appl_id=222
--備份:用戶已經備份數據
Select?RCTLG.CUST_TRX_LINE_GL_DIST_ID???????From?RA_CUST_TRX_LINE_GL_DIST_ALL?RCTLG,?RA_CUSTOMER_TRX_LINES_ALL?RCTL,
????????????RA_CUSTOMER_TRX_ALL?RCT
???????Where?RCTL.customer_trx_line_id?=?RCTLG.customer_trx_line_id
???????And?RCTL.customer_trx_id?=?RCT.customer_trx_id
???????And?RCTL.Line_Number?>=?26
???????And?rctl.line_number?<=?31
???????And?rct.trx_number?=?'32001208'
???????And?RCT.org_id?=?121
?
返回:
CUST_TRX_LINE_GL_DIST_ID
58239
57424
57425
57426
57438
58240
?
執行更改:
?
BEGINfnd_global.APPS_INITIALIZE(user_id?=>1111?,resp_id?=>50317?,resp_appl_id?=>222?);
?
Update?RA_CUST_TRX_LINE_GL_DIST_ALL?A
Set?A.customer_trx_id?=?4597
Where?a.org_id?=?121
And?a.customer_trx_id?=?4609
And?a.CUST_TRX_LINE_GL_DIST_ID?In
??????(Select?RCTLG.CUST_TRX_LINE_GL_DIST_ID
???????From?RA_CUST_TRX_LINE_GL_DIST_ALL?RCTLG,?RA_CUSTOMER_TRX_LINES_ALL?RCTL,
????????????RA_CUSTOMER_TRX_ALL?RCT
???????Where?RCTL.customer_trx_line_id?=?RCTLG.customer_trx_line_id
???????And?RCTL.customer_trx_id?=?RCT.customer_trx_id
???????And?RCTL.Line_Number?>=?26
???????And?rctl.line_number?<=?31
???????And?rct.trx_number?=?'32001208'
???????And?RCT.org_id?=?121);
END;
http://blog.retailsolution.cn/archives/2088
總結
以上是生活随笔為你收集整理的Datafix_for_arinvoice_dist_move的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 印度HCL揭秘云计算五大盈利模式
- 下一篇: 让人期待的2011年度最佳 jQuery