国际货代系统多币种设计

对于国际货代系统,多币种是必须的,除非系统只打算在美元体系国家销售,还真见过一套那样的系统,后来听说在改了。但多币种的引入,改起来真的不是那么简单,会使整个账单体系的复杂度成倍地增加。当然了,也可能他们底层架构设计得好,高手无处不在。

本地币种的概念

系统支持多币种,就一定要引入本地币种的概念,毕竟对于某一个国家的分公司来讲,理论上本地币种是固定的,注意这里说的是理论上哟,极端情况下本地币种是会变动的,比如欧元区的国家,比如国家政权的更替等等,用户管理员必须有更改本地币种的权限。

但这种更改对于整个账单体系可能会带来非常大的影响,何罗鱼系统里利润是以本地币种和美元两套币种分别计算,但是仍然无法回避这个问题,本地币种是变量,如果发生了调整,历史数据的利润值就可能因为业务数据的变动而被重新计算。

汇率值设定机制

首先要明确一下汇率值的维度,何罗鱼系统是套集团架构设计的 SaaS系统,所以汇率也是基于集团维度统一配置,应用于所有分公司,这能更好地实现集团公司内部的协同作业机制;

其次关于汇率值的设定,目前何罗鱼系统机制是所有兑换币种均以本地币种作为基准进行换算计算,我们研究过交叉汇率的算法,比如欧元、日元可以直接进行转换,但目前还没有遇到需要的使用场景。

自动汇率取值算法

做账录入费用操作时,汇率值会由集团预设值自动带入,减少操作人员工作量,这个也是国际货代系统的标准功能了,但实际使用中各家系统的取值正确性可能值得商榷,之所有会有这么一说,是因为这个算法也并不是各位老板想像的那么简单。

简单地写下取值逻辑如下,何罗鱼系统中这个取值应该有几千行代码:

  • 找到正在录入费用记录中选择的币种
  • 找到正在录入费用记录对应业务表单子的 ETD(这里也有很多坑,暂不一一讲了)
  • 如果为空直接跳到第二种算法(何罗鱼系统不可为空)结束算法
  • 在汇率表里找到被选中的币种,如果为空,结束算法
  • 如果有值,则找到此币种的汇率生效起止时间值
  • 比较 ETD 与起止时间值大小
  • 如果存在有效区间值,比较时间值是否有重复的情况(何罗鱼前端控制不可重复),算法结束
  • 如果不存在有效区间值,按第二种算法执行,即选择此币种的最后一个有效汇率值,算法结束
  • 如果更改了费用币种,重新计算
  • 如果更改了汇率值......
  • 如果更改了汇率维护值......
  • 如果更改了 ETD 值......

利润算法中的汇率/集团报表中的汇率

篇幅限制,这两点专门开篇总结吧。