前几天,有个客户向我抱怨他们的invoice经过EDI传输到他们的客户之后,总是被对方的EDI服务器拒掉,理由是 “The summary TAX amount is not sum ofline tax”。查看了下IDoc到EDIFACT(一种国际的EDI标准消息格式)的mapping程序,逻辑上这些所谓的tax都是直接从SAP的IDoc里取的,总和也是直接取的,一算,这边绝然没有问题。
那应该是对方的check机制上的原因了,于是与对方沟通,发现他们tax是自己再从net value里算的!并且保留两位小数,这个一样,那理论上四舍五入,大家算的行项目tax应该也是一样的啊!
列张表格细分析下,
item | net value | tax in sap/EDIFACT | tax partner calculated |
---|---|---|---|
1 | 78.05 | 7.81 | 7.81 |
2 | 50.50 | 5.05 | 5.05 |
3 | 139.05 | 13.90 | 13.91 |
4 | 50.50 | 5.05 | 5.05 |
5 | 60.50 | 6.05 | 6.05 |
6 | 51.90 | 5.19 | 5.19 |
7 | 15.61 | 1.56 | 1.56 |
total | 446.11 | 44.61 | 44.62 |
这里税率都是10。
问题出现了!第三行,SAP中竟然把139.05乘以税率后算成了13.90;查看了一些其他的invoice之后发现确实有类似情况发生,但是SAP这样做补充了其他行四舍五入造成的误差,使最后的值更接近真实值。至于SAP究竟是怎么做的,笔者也懒得跟踪标准程序去看了,有兴趣的可以研究下。
虽然最后是我方改了mapping使得tax不直接取值而是计算解决了,但是其中的偏差就……不过他们企业可以接受那就随他们了。PS.客户的EDI Partner的那个check机制虽然很负责任,但是坑爹啊,不过最后到底是哪方拣点小便宜,从概率论上来说,还是折中的。