博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Datafix_for_arinvoice_dist_move
阅读量:6487 次
发布时间:2019-06-24

本文共 3560 字,大约阅读时间需要 11 分钟。

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 发票头:32001208
SELECT 
* 
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

 

执行更改

 

BEGIN
fnd_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://qnauo.baihongyu.com/

你可能感兴趣的文章
selenium-webdriver(python) (十四) -- webdriver原理
查看>>
《ANSYS FLUENT 16.0超级学习手册》——导读
查看>>
Zookeeper的功能以及工作原理 (转自:http://www.cnblogs.com/felixzh/p/5869212.html)
查看>>
服务器管理助手Linux版(宝塔)新版安装,支持一键SSL配置
查看>>
开发原生的 Google 眼镜应用 【已翻译100%】(1/2)
查看>>
《树莓派Python编程入门与实战》——1.3 哪些树莓派外设是必须的
查看>>
《编译与反编译技术实战 》一3.2 词法分析器的手工实现
查看>>
《计算机存储与外设》----1.5 虚拟存储器和存储器管理
查看>>
《 Python树莓派编程》——3.4 利用Python进行编程
查看>>
从损坏的 Linux EFI 安装中恢复
查看>>
Git Rebase教程: 用Git Rebase让时光倒流
查看>>
柏林纪行(上):整体感受
查看>>
《Python数据科学指南》——1.14 返回一个函数
查看>>
《Python数据分析》一1.7 学习手册页
查看>>
Centos7 下建立 Docker 桥接网络
查看>>
《Hack与HHVM权威指南》——1.6 类型推理
查看>>
《CCNA学习指南:数据中心(640-911)》——导读
查看>>
《精通 ASP.NET MVC 5》----1.3 ASP.NET MVC的关键优点
查看>>
《JavaScript框架设计》——1.5 主流框架引入的机制——domReady
查看>>
《正则表达式经典实例(第2版)》——2.3 匹配多个字符之一
查看>>