以两种不同的货币显示相同的交易(金额/票价)

时间:2012-09-13 04:49:31

标签: java database currency

我们正在开发旅游网站,用于预订航班,酒店,汽车等。这是基于产品的软件。客户(购买我们的软件)将成为“主要代理商”。他的总交易将以INR(印度卢比货币)计算。总航班,酒店或汽车预订仅限于'INR'。

现在他有权创建他的“子机构”。子机构货币可能是美元或印度卢比等。这意味着“主要机构”可能在全世界范围内拥有其子机构。现在每当“子机构”登录时,他的交易报告应该是他的货币。如果他的货币为“澳元”,则总交易量应仅为“澳元”。在创建子机构时,我们修复了他的货币,无论他是属于美元还是澳元或AED等。它是固定的。

当“子代理”生成故障单(以澳元为单位)时,此交易也会显示在主代理交易报告中。这是实际问题出现的地方。对于“子机构”,报告应为“AUD”,对于主要机构,报告应为“INR”。 主要机构已准备好承担货币转换的盈利/亏损。但“子机构”不应该失去/获得。

我们将“子代理”存款以“主要代理商”存入其货币(美元/澳元),当他登录时,我们以美元/澳元显示票价。预订后,我们将从他的可用余额中扣除该金额。但是当谈到报告时,我们必须以两种方式显示这些交易。对于主要代理商,它应该在INR中,对于子代理商,它应该是他的货币(USD / INR)。

我的解决方案很少,但这些让我的开发很复杂。我期待更好的解决方案。

我的解决方案之一是,在存储交易时,还将货币转换率存储为“INR”。现在使用该货币转换率将其转换为“INR”。这是好的解决方案吗?

示例:子代理商执行“2.00美元”交易。存储时,还可以将货币转换率作为列添加到表中。例如,'1 USD = 55 INR'。显示它时计算2 * 55,并在主机构报告中显示为110 INR。

请为此提出更好的解决方案。

1 个答案:

答案 0 :(得分:2)

使用多种货币进行计算非常有趣。如果你想要一个有趣的历史记录,请在你最喜欢的搜索引擎上查找“euro triangulation”。

在某个地方,您必须记录要使用的货币转换率。你可以选择许多不同的技术,它们都会产生稍微不同的答案:

  • 交易时可获得的最佳报价汇率。
  • 当天的报价汇率(存储在每日转换率表中,而不是每笔交易中)。
  • 从来源收集的月平均汇率,或根据每日汇率来源计算。
  • 接待员每天从报纸上的信息输入的汇率。

请注意,代理商有买卖价;这些(差价)之间的差异代表了交易的保证金。

根据我的经验(现在已经过时20年 - 在全球网络之前),每日报告中使用每日费率,并且每日费率用于创建月度报告中使用的平均月费率

但是,必要时,您可以在某处记录每笔交易使用的汇率,可以是交易,也可以是根据您选择使用的规则交叉引用的单独表格。