我发现很难找到有关处理多种货币的最佳做法的讨论.任何人都可以提供一些见解或链接来帮助吗?
我知道有很多方法可以做到这一点 - 在交易方式中存储按原样输入的值,或者在功能上转换为基本费率.在这两种情况下,都需要存储汇率,以涵盖将来可能需要转换为的每种货币的交易时间.
我喜欢交易方法的灵活性,它允许在以后输入旧的汇率信息,但可能比功能方法有更多的开销(因为你必须存储更多的汇率数据).
性能和可伸缩性是主要因素.我们(所有.net)都有一个win&web客户端,一个报告套件和一组为数据库后端提供功能的Web服务.如果需要,我可以在某处(例如在客户端)缓存汇率信息.
编辑:我真的很喜欢链接到一些文件,或者包含之前经验中的"陷阱"的答案.
Mr *_*ubs 39
我找不到任何明确的讨论,所以我发布了我的发现,我希望它可以帮助某人.
货币表应包含使用任何全球化类的文化代码.
交易方法
功能方法
综合
对照
实际上,您必须在功能和事务方法之间进行选择.两者都有其优点和缺点.
功能方法不需要为交易存储本地货币,需要将当前的数据库值转换为基本货币,只需要一组汇率,虽然需要较少的存储空间,但实施和维护稍微困难一些.
交易方法更灵活,但它确实需要保留更多的汇率信息,并且每个交易都需要与输入货币相关联(尽管这可以应用于一组客户而不是每笔交易).它通常不会影响已经在生产中的代码,因为本地货币仍将在本地使用,这使得该解决方案易于实施和维护.虽然显然任何需要转换为不同货币的报告或价值都会受到影响.
在这两种情况下,每个交易都需要交易时间的汇率,以换取需要转换的每种货币 - 这在功能方法的交易点是必需的,但交易方法允许更灵活,因为过去的汇率数据可以输入任何时候(允许使用任何货币),即您在功能方法中失去使用其他汇率的能力.
结论
货币管理的交易方法将提供灵活的方法,避免对客户端性能的任何负面影响和零客户端代码修改.如果需要不同的货币,所有人都需要返工,报告可能会产生负面的业绩影响.每个客户端站点都需要存储一个货币参考,说明他们的输入货币是什么.应该可以在高水平存储汇率(例如一组客户站点等),这将最小化存储的数据量.如果在较低级别需要汇率信息,则可能出现问题.
Fre*_*rik 17
没有单一的答案,因为它在很大程度上取决于企业处理这些货币交易的方式.一些公司使用相当复杂的方法来管理外币.我建议你阅读多货币会计.
要做的主要事情是捕获业务交易完成的单位,价值和日期中的数据而不进行任何转换,否则您可能会在翻译中丢失一些内容.对于显示和报告,可以使用原始汇率或任何其他汇率按需转换,具体取决于用户的意图.
使用值作为"十进制"(在C#中)类型存储和计算 - 不要使用float/double或者让自己容易受到舍入错误的影响.
例如,我在前一生中使用多币种应用程序的方式是:
我们公司处理多种货币会计和预算.我们实施的解决方案非常简单,包括以下内容:
一个货币表,包括几个字段,包括要考虑用于货币的小数位数(是的,一些货币必须用3位小数管理......)和汇率值,除了是"建议"之外别无其他意义评估'未执行'或'未决'金融交易时的/默认汇率(见下文)
在此货币表中,其中一个记录的汇率为1.这是我们系统中的主要/枢轴货币
所有金融交易或具有财务维度的所有业务(我们称之为我们语言的承诺)都可以排序为"待定"或"已执行":
待处理交易是例如预期在特定日期收到特定金额的发票.在我们的预算跟进系统中,这些金额总是根据货币表中提供的"建议/默认汇率"进行重新评估.
执行的交易总是与执行日期,金额,货币和汇率一起保存,在输入执行数据时必须确认/输入.