四、资产模块常用表
对于资产模块,个人实际接触比较少,主要是通过官方文档和一个简单的资产明细报表的开发做的理解,会有很多不准确甚至错误的地方,之后会不断更新完善
1、首先通过前台ebs界面找到各个字段对应的各个表,而后分析各个表本身,以及相关的关系,在此过程中熟悉方法,并加深理解:
通过SYSTEM中的last—query 是前台进行操作后,后台进行的最近的一个查询语句,而并不一定在查找该具体项是从哪里来的;要想具体看在那里 需要利用属性 项目 里 的block找到相应的sql语句;那么依然找不到一些想要的数据时怎么来的怎么办呢? 通过‘帮助’里面找到最后一项的版本信息中找到form的名字,从服务器中拉出来一点点看
2、FA中涉及到的常用表的理解
总体上,绝大部分表中都有asset_id和book_type_code,因为都是大部分信息在这个限定下的才有实际应用意义,-类似于总账模块下的 ledger_id和period_name(当然coa部分在ledger_id却情下来后也定下来了)自我理解,对于现实中的资产操作 无非就是 买入 折旧 报废,以及在这个过程中的分配对于这些动作 的相关信息储存在下面各个表当中,不同的动作导致不同的表中插入各种数据
将报废看作折旧的最终状态做理解,所以报废的一些操作也会在fa_books中产生数据的影响,而折旧和fa_books表可以类比总账部分行表和头表的关系做理解,
(1)FA_ADDITIONS_B
表理解:
FA_ADDITIONS_B包含描述性信息,以帮助您识别您的资产。 Oracle资产不使用此表进行计算折旧。
字段理解:
资产ID(ASSET_Id关联其他表)
资产编号(ASSET_NUMBER)
类别(ASSET_CATEGORY_ID)
说明(description)
序列号(SERIAL_NUMBER)
资产类型(ASSET_TYPE)
数量(CURRENT_UNITS)当执行数量上的报废时,Oracle资产减少CURRENT_UNITS报废的数量。
所有权(OWNED_LEASED)
已购(NEW_USED)
属类别(ATTTIBUTE_CATEGORY_CODE)
与其他表的重要关联:
FA_CATEGORIES_VL中的(CATEGORY_ID)关联字段(ASSET_CATEGORY_ID )得到类别中文描述;
关联到前台的大类、小类
(2)FA_BOOKS
FA_BOOKS包含计算折旧所需的信息。
当最初添加资产时,Oracle Assets在其中插入一行表。这将成为资产的“活动”行。每当你使用折旧表(FA_DEPRN_DETAIL)以更改资产的折旧信息,或如果报废或恢复它,Oracle Assets在表中插入另一行,
然后它成为新的“活动”行,并将前一行标记为过时。在任何时间点,在任何给定的折旧帐簿资产的表中只有一个“活动”行。通常,Oracle资产使用活动行,
其特点为
DATE_INEFFECTIVE和TRANSACTION_HEADER_ID_OUT为NULL。同时在实际写包的时候,这2个字段,和period_counter、period_name通过最大值,最小值,去确定一段期间,在资产剩余使用寿命的函数中尤为明显。另外TRANSACTION_HEADER_in与DATE_EFFECTIVE同样也有联系,但是并不是简单的1对1的关系,这部分内容需要在实践中进一步理解!!!!!!!!!!!!!!!
当Oracle资产终止一行时,DATE_INEFFECTIVE和TRANSACTION_HEADER_OUT设置为新行的DATE_EFFECTIVE和新行的TRANSACTION_HEADER_IN。你可以很容易地识别受同一事务影响的行,因为它们具有相同的DATE_EFFECTIVE
/ DATE_INEFFECTIVE和TRANSACTION_HEADER_ID_IN
/
TRANSACTION_HEADER_ID_OUT对。
当Oracle资产创建新行时,用于TRANSACTION_HEADER_ID_IN列的值与TRANSACTION_HEADER_ID插入到的行FA_TRANSACTION_HEADERS,DATE_EFFECTIVE是系统日期。
当报废资产时,Oracle
Assets插入一个新行以报废的金额为度降低当前成本(COST)。当恢复资产时,Oracle
Assets插入一个新行增加COST 的值,增加多少呢,对应COST_RETIRED FA_RETIREMENTS中对应行的COST_RETIRED。
字段理解:
账簿(book_type_code),
原始价值(original_cost)
当前价值(cost) 这个值得改变与折旧没有关系,只与前台是否做调整,以及东西是否报废去衡
残值(salvage_value)本字段和下面的percent_salvage_value字段两者只能有一个字段有值,salvage字段是由前台设定的,当其为null时,残值用当前价值cost*残值率得出
残值率(percent_salvage_value)
资产启用时间(date_placed_in_service) 与原始价值在逻辑位置上相同,一般和下面deprn_start_date字段写相等
折旧开始日期(deprn_start_date) 计算资产使用寿命时,可能用到的字段,与折旧日期(prorate_date)也会用到
这里涉及到一个问题什么时候用折旧开始日期,因为按照目前项目上的情况,都是资产于下月的1号进行折旧,即
当前账期的折旧,在下个账期进行计算。好好理解2个字段的不同。
每次事务发生的时间开始时间(date_effective)本次折旧发生的时间,这里应该理解折旧是一个时间段,而非一个时间点
每次事务发生的时间结束时间(date_ineffective)本次折旧结束的时间点
transactions_header_id_in 每笔折旧发生时产生的id 理解上和date_effective 相似,不过这是一个i d transactions_header_id_out每笔折旧发生时产生的id 理解上和date_ineffective 相似,不过这是一个id
对于上面的字段, date_effective和 transactions_header_id_in应该是1对1 的关系,但是在实际应用的函数书写考虑时,并未做1对1的关系,这里需要进一步理解
与其他表的关联关系:
与FA_BOOK-CONTROLS相关 通过book_type_code 或者这就账簿的总体信息,
FA_DISTRIBUTION_HISTORY(transactions_header_id_in,transactions_header_id_out)相关
(3)FA_BOOK-CONTROLS
包含所有的影响折旧帐簿中的资产的信息
set_of_books_id 对应总账 gl_ledgers中的ledger_id
Accounting_flex_structure对应总账 gl_ledgers中的 coa
以LAST_PERIOD_COUNTER是运行折旧的最近的账期。 Oracle资产使用它来防止在一个期间内多次运行折旧程序
并确保在连续的期间内都可以运行折旧程序
INITIAL_PERIOD_COUNTER记录在使用oracle资产模块进行折旧的第一个期间(因为可能之前不是用的oracle系统进行折旧)
INITIAL_DATE记录在使用oracle资产模块进行第一次折旧的时间
ACCOUNTING_FLEX_STRUCTURE 就是总帐中的coa 相当于GL_CODE_COMBINATIONS中的CHART_OF_ACCOUNTS_ID。
DEPRN_REQUEST_ID最近一次进行折旧请求的id
当然book_type_name 账簿的中文 描述也在这里面
(4)FA_DEPRN_DETAIL
其包含每个分配行上的关于这就的信息。 Oracle资产使用此信息为总账模块的日记账做信息存储吧。
每次运行折旧时的资产,该表中每个分配行插入一行;例如,如果你将资产分配给两个不同的成本中心,折旧时程序在此表中为资产插入两行。所有会在相同的asset_Id下有多个distribution_Id
,其中distribution_Id可能相同也可能不同,因为同一批分配的distribution_Id相同,不同批的自然就不同
DEPRN_AMOUNT是本分配线下的本次这就的金额
YTD_DEPRN为本会计年度的这就金额综合
DEPRN_RESERVE 为当前所有这就金额总和
添加资产时,Oracle
Assets在此表中插入一行在本期间之前的期间。此行具有资产ADDITION_COST_TO_CLEAR列中的成本,以及DEPRN_SOURCE_CODE为'B'。此列用于报告新资产。基本可以理解为刚分配的时候
运行折旧时,Oracle Assets将成本转移到当前周期行中的COST列,此行的DEPRN_SOURCE_CODE为'D'。
这里关于折旧和分配加上自己的一些理解,首先新增一条资产以后在折旧明细表中肯定存在一个distribution_id,特殊理解点在于如果之后如果以此资产进行多次分配,折旧表中不会再增加distribution_id,.而在分配历史表中则在不断增加数据,二者做关联的时候注意使用外连接的方式(这个思路有待求证)
字段理解:
Period_counter 与FA_DEPRN_PERIODS的相同字段做关联
(5)FA_DEPEN_PERIODS
包括有关折旧期间的信息,PERIOD_OPEN_DATE和PERIOD_CLOSE_DATE每次进行折旧的期间的开始结束日期。(和其他表中的date_effective,date_ineffective的关联关系稍微想想)
每次运行折旧程序时,它将关闭当前期间,将PERIOD_CLOSE_DATE设置为系统日期。 它也是通过在此表中插入一个新行来打开下一个期间其中PERIOD_CLOSE_DATE为NULL,PERIOD_OPEN_DATE等于旧行的PERIOD_CLOSE_DATE。
(6)FA_RETIREMENTS
包含有关资产报废的信息。(这里报废的概念其实也包括资产的恢复,即REINSTATE)
当报废资产,或者恢复资产并更新时,这个表中就会插入一条数据当报废一条数据时,Oracle
Assets插入的行具有的TRANSACTION_HEADER_ID_IN和DATE_EFFECTIVE这两个参数对应在FA_TRANSACTION_HEADERS中的TRANSACTION_HEADER_ID和DATE_EFFECTIVE。并且此时的TRANSACTION_HEADER_ID_OUT和DATE_INEFFECTIVE为NULL。
如果恢复了已经计算收益或损失的Oracle资产的报废,Oracle资产则会更新TRANSACTION_HEADER_ID_OUT和DATE_INEFFECTIVE用新的FA_TRANSACTION_HEADERS中的TRANSACTION_HEADER_ID和DATE_EFFECTIVE行
如果恢复了没有计算增益或损失Oracle资产的报废,Oracle
Assets只是从表中删除行,因为它没有财务影响。
辣么,问题来了,怎么去知道他是否进行了收益和损失的计算呢
通过字段status的内容:
PENDING Oracle资产尚未计算收益或损失的报废。
PROCESSED Oracle资产已经计算了收益或亏损的报废。
REINSTATE Oracle资产尚未处理恢复。
DELETE Oracle资产已处理恢复。
字段理解:
报废价值(COST_retired)
报废状态(STATUS)
报废类型(retirement_type_code)
实际报废价值(nbv_retired)
表关联:
关于报废和折旧表的联系脑子中并不清楚,暂时先不做关联,等实际应用上再去理解吧
FA_TRANSACTION_HEADERS(TRANSACTION_HEADER_ID,DATE_EFFECTIVE)与(TRANSACTION_HEADER_ID_in,date_effective),此时报废表中的TRANSACTION_HEADER_ID_out和date_ineffective为空
(7) FA_DISTRIBUTION_HISTORY
FA_DISTRIBUTION_HISTORY
包含分配资产的雇员,位置和会计Flexfield值有关的信息。折旧程序使用此信息
分配折旧费用,Transfers form使用它维持资产转移的审计跟踪。
当您使用Transfers for初始分配给资产时,Oracle Assets为每个分配插入一行。每当转移,报废,恢复或重新分类资产,Oracle资产将相应的行标记为过时并创建新行,新航可以反映分配单位,员工,总帐折旧费用科目或位置。
Oracle资产通过设置DATE_INEFFECTIVE和TRANSACTION_HEADER_ID_OUT到来终止一次分配,分别对应新行的DATE_EFFECTIVE和TRANSACTION_HEADER_ID_IN。这意味着你可以识别受同一事务影响的行,因为它们有相同的DATE_EFFECTIVE / DATE_INEFFECTIVE和TRANSACTION_HEADER_ID_IN / TRANSACTION_HEADER_ID_OUT对。
对于新行,TRANSACTION_HEADER_ID_IN与FA_TRANSACTION_HEADERS中相同已插入行的TRANSACTION_HEADER_ID相等,DATE_EFFECTIVE系统日期。
当执行完全报废时,Oracle资产将更新资产的当前分配行,其中RETIREMENT_ID为
FA_RETIREMENTS中的ETIREMENT_ID,以便您可以轻松确定哪个报废影响行。 Oracle资产字段TRANSACTION_UNITS中以负数存储单位数字。TRANSACTION_UNITS的总数为FA_RETIREMENTS中UNITS,除了符号相反。
当您执行部分报废时,Oracle资产更新这部分报废的相关行。任何分布对于任何还存有数量的行,会在units_assigned减少已经报废的数量,然后插入一个新的行,而终止旧的行。
如果完全恢复报废,Oracle Assets插入新行,这新行中的数据与完全报废之前的数据相同,除了它们有不同的DISTRIBUTION_ID,TRANSACTION_HEADER_ID_IN和DATE_EFFECTIVE。
如果你部分恢复报废,Oracle Assets插入新行,其中UNITS_ASSIGNED中加上之前报废数量,并分配一个新的 DISTRIBUTION_ID,TRANSACTION_HEADER_ID_IN和DATE_EFFECTIVE。
RETIREMENT_ID标识受退休影响的所有行。
TRANSACTION_UNITS 是每一次报废、恢复报废、转移、增加、重分类的发生事件的数量
(新)fa_asset_keywords
首先要明白,资产模块有三个弹性域,
1,类别
2,关键字
3,(分配表中)地点
fa_additions_b.ASSET_KEY_CCID 和fa_asset_keywords.CODE_COMBINATION_ID 可与 fnd_flex_values_vl,fnd_id_flex_segments等表通过gcc表中的各个SEGMENT关联起来,找到上面3个弹性域的相关信息