OpenERP用货币对象来实现外币的管理。
用户可以按需定期输入汇率,当凭证涉及外币的时候,需要取对应汇率进行转换。
有一个特例就是公司的本位币,汇率应该永远为1的。
货币对象上有一个base字段,我的翻译是“本位币”,勾选这个证明这个货币将作为公司本位币。不过,这里有几个问题:
勾选了“本位币”这个字段,下面的汇率表格就不可输入了。
系统并没有检查公司设置与货币设置的一致性。也就是说即使你勾选了USD为本位币但是公司本位币设成CNY,不会有任何提示和报错。
即使勾选了本位币的货币,也至少需要维护一条汇率数据,当然,汇率是1。OpenERP把货币被第一次导入的日期作为初次输入汇率的日期。
这个设计本身没什么问题,但是我们还是碰到了报错。某客户上线日期为2012年10月1日,但公司高层决定补录2012年全年的数据。当某个用户输入一个 2月份的外币(USD)单据时,遇到了报错“此日期USD的汇率未找到”。用户马上去补录了USD在2月1日的汇率,但是仍报错“此日期CNY的汇率未找 到”。用户又去查看CNY的定义,发现编辑状态下无法输入汇率。给我们打电话解释之后,我们告知他先把“本位币”那个勾去掉,然后把第一行汇率的日期改到 2000年1月1日。
综上,货币里的base字段作用不大,却可能引起麻烦,特此分享。