通过API对接传入价税合计、折扣额、含税单价等数据后不一致问题浅析

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

通过API对接传入价税合计、折扣额、含税单价等数据后不一致问题浅析

       通过API传入做订单的时候,有些场景下需要通过接口将第三方系统的价税合计 或 折扣额 或 含税单价 直接传入,但经常会出现传入的数据和最终订单上的数据不一致的问题,比如,传入的价税合计是108.47,但对接成功后,订单的价税合计是108.48;有比如传入的含税单价是10,对接成功后,订单的含税单价为0。折扣额类似,诸如此类的问题,起主要根本原因都是传入的数据和系统的运算发生冲突覆盖导致的。

       先简单说明API传入数据的时候,各个字段的执行顺序,是跟报文里的字段顺序是一样的,所以如果先传入了价税合计,然后传入其他字段触发了对价税合计的重算,那么重算的结果自然就会将传入的价税合计覆盖。比如以下例子:

             "FSaleOrderEntry": [
                    {
                        "FMaterialId": {
                            "FNumber": "C999791P"
                        },
                        "FQty": "5.00",
                        "FALLAmount": "108.47",
                        "FTaxPrice": "21.695999",
                        "FEntryTaxRate": "13.00"
                    }
                ]

      上述这个例子里,传入了销售数量FQty5,然后价税合计FALLAmount传入108.47,到此时,价税合计已成功传入108.47,但接着传入了含税单价FTaxPrice=21.695999,含税单价的值更新触发价税合计的重算,计算结果为108.47999,按精度取两位小数,最终价税合计=107.48,覆盖了传入的108.47

       根据以上原因,解决办法就是调整一下字段顺序,将先传入数量和单价等字段,先让系统的计算先进行,最后传入价税合计,用传入的价税合计覆盖计算的结果即可。修改后的报文示例如下:

             "FSaleOrderEntry": [
                    {
                        "FMaterialId": {
                            "FNumber": "C999791P"
                        },
                        "FQty": "5.00",
                        "FTaxPrice": "21.695999",
                        "FEntryTaxRate": "13.00",

                         "FALLAmount": "108.47"

                     }
                ]

       含税单价或折扣额等字段相同的问题原因和处理方法都是一样的,并注意的是,调整这些字段的传入顺序时,最好是调整到明细信息的最后一位,这样可确保在它们之后不会再有字段会联动触发计算覆盖。

      对于含税单价而已,跟它发生覆盖的主要是取价服务,触发取价服务的有日期、客户、销售部门、销售组、销售员、结算币别、是否含税、价目表、辅助属性、销售数量、计价数量、是否赠品、BOM版本、批号。折扣额则是由于折扣率的值更新重算或获取折扣服务的结果重算,触发取折扣服务的一般是单价或含税单价的值更新。

       最后,特别需要注意提醒,以上调整报文里字段顺序的方法在使用是,接口的参数 自动调整Json字段顺序 IsAutoAdjustField 比如置为false,不可以启用这个参数,启用这个参数后,报文里的字段顺序就会随机自动调整,无法进行控制。

通过API对接传入价税合计、折扣额、含税单价等数据后不一致问题浅析

通过API传入做订单的时候,有些场景下需要通过接口将第三方系统的价税合计 或 折扣额 或 含税单价 直接传入,但经常会出现传...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息