第五篇:HFM产品的折算-下
准则要求:所有者权益项目除“未分配利润”项目外,其他项目采用发生时的即期汇率折算。
我们在HFM系统实现权益类科目折算时,会以上线时间做个基准点。比如2017年10月上线,我们需要在HFM系统编制2017年10月的合并报表,那么2017年10月的汇率就是准则里所说的发生时的即期汇率。对于权益类除未分配利润外的科目,比如实收资本,折算时使用的汇率我们通常称之为历史汇率,如果在2017年10月之前出现多次增资,那么实际实收资本的折算后金额应该是多个汇率计算得出的结果,所以我们在HFM系统中通常会采用直接录入折算后历史数的方法来实现实收资本科目的折算。
在Oracle FCCS(财务关账和合并云)中已经固化了权益类科目的折算方法,一种是录入历史汇率“Rate Override Accounts”的方法,另一种是录入折算后历史数“Amount Override Accounts”的方法。就是把我们在实施HFM系统折算时的最佳实践,固化在了FCCS中,开箱即用。
接下来,我们就讲HFM系统权益类科目的实现方法。
1、HFM系统基础设置
(1)AppSetting的设置:
(2)Account的相关属性设置
(3)自定义维度4-Movement的设置:
2、自定义折算逻辑介绍
举例:2017年10月,本位币人民币(EC),父级币种美元(PC)。
ClosingRate= 6.00,AverageRate=6.50
注:N/A代表不适用。
“3001-实收资本-Beg-年初余额”在<ParentCurrency>金额6,300,000.00是通过在sub calculate()写规则计算的。
上线时间点,将录入的“His3001-实收资本-折算后历史数”赋值给<Parent Currency>上的“3001-实收资本-Beg-年初余额”,以后年度的折算后年初数,均从上一年的最后一个月结转。
上线时间点:
If Hs.Value.IsTransCur= True Then
Hs.Exp "A#3001.C4#Beg=A#His3001.C4#[None]"
End If
上线之后的跨年结转:
If Hs.Value.IsTransCur = True Then
Hs.Exp "A#3001.C4#Beg= A#3001.C4#Beg.Y#Prior.P#Last"
End If
除未分配利润外的权益类科目均采用实收资本的折算方法进行折算。
未分配利润的折算
外币报表折算差的计算
为什么会有外币报表折算差?
本位币的资产负债表是平衡的,由于在折算的过程中采用了不同的汇率,导致产生了外表报表折算差。如果完整的资产负债表均采用期末汇率折算,是不会产生外币报表折算差的。
然而权益类科目除了未分配利润外我们采用的是折算后历史数的折算方法,会产生外表报表折算差。未分配利润是由很多项目汇总而来(详见上图),也会产生外表报表折算差。
在HFM系统实施过程中,我们通常采用在<Parent Currency>写计算规则的方法计算外币报表折算差。下图示例折算后资产负债表。
If Hs.Value.IsTransCur = True Then
Hs.Exp“A#其他综合收益-外币报表折算差= A#资产总额- A#负债总额- A#除其他综合收益-外表报表折算差外的所有者权益科目”
End If
在FCCS中,固化的外币报表折算差计算采用的是正向计算方法,也就是说会将采用Override方法的科目的汇率差异逐项计算出来,汇总至外币报表折算差,可以清晰可见外币报表折算差的组成部分。避免了采用倒减方法会隐藏其他资产负债比平衡差异的问题。当然HFM系统的实施过程中,也可以采用正向的方法进行计算。
到此,HFM系统的外币折算实现方法就都写完了。其实在实际客户的应用之中,还会出现很多特殊情况,在结转方面,在汇率使用方面,在<Parent Curr Adjs>日记账调整方面,这些就要具体问题具体分析了,但是HFM系统实现外币折算的基本原理,就是我这三篇文章所写了。