本文介绍了在销售订单变更业务场景下,通用保存接口存在的问题,如构造单据数据包难度大、准确性要求高等。为此,星空通版产品封装了专门的销售订单新变更单WebAPI接口,通过两步完成变更:先自动创建变更单,再调用修改保存接口处理变更内容。文中还提供了接口名称、参数、示例及客户端调用、Postman测试验证等详细操作说明。
随着外部销售订单新变更单的对接需求越来越多,平台通用的Save保存单据接口,对于变更业务场景可能不太适用,由于变更单的数据是原封不动的来自于原始销售订单,如果通过公共保存接口构造出来的变更单数据可能有以下几点问题:
构造单据数据包难度大,构造的字段会非常多,包括与原始订单关联的PKIDX字段
构建单据数据包的准确性要求高,一些字段值更新事件触发带出来的默认值可能与原始订单信息有偏差。
基于以上原因,星空通版产品专门封装了销售订单新变更单WebAPI的标准使用接口来用于变更:
新接口通过两个步骤来完成变更:
通过简单的原始订单的信息如(销售订单单号、销售订单内码、销售订单分录内码集合等),先自动创建好销售订单新变更单单据出来,方便快捷,数据准确性得到保证,跟界面操作订单变更生成的变更单界面是一样的。
在自动生成订单新变更单单据的基础上(得到返回的新变更单内码和分录内码信息),通过使用单据的修改保存接口来进行实际的变更内容处理。
接口说明和示例:
接口名称:SaveXSaleOrder
接口参数:
SaleOrderBillNo:原销售订单编号,
SaleOrderBillId:原销售订单内码FId,
SOEntryIds:原销售订单分录内码集合(数组)--可部分行变更
参数示例:string parm=
"{
\"SaleOrderBillNo\":\"XSDD00888\",
\"SaleOrderBillId\":888888,
\"SOEntryIds\":[888801,888802]
}";
接口Url地址:
http://domain/k3cloud/Kingdee.K3.SCM.WebApi.ServicesStub.SaveXSaleOrderWebApi.SaveXSaleOrder.common.kdsvc
<1>客户端调用示例:
1. 构造登陆信息
string url = "http://domain/k3cloud/Kingdee.bos.webapi.ServicesStub.authservice.validateuser.common.kdsvc";
//站点地址
string dataCenterId ="账套Id";
string userName ="用户名";
string userPwd ="用户密码";
2. 登录校验
var client = new Kingdee.BOS.WebApi.Client.K3CloudApiClient(url);
var ret = client.ValidateLogin(dataCenterId, userName, userPwd, 2052);
var jResult = JObject.Parse(ret);
var resultType = jResult["LoginResultType"].Value<int>();
if (resultType != 1 && resultType != -5) return;
3.构造生成新变更单参数如下:
string parm="{\"SaleOrderBillNo\":\"XSDD000688\",\"SaleOrderBillId\":100827,\"SOEntryIds\":[102803,102804]}";
4.客户端调用生成销售订单新变更单接口:
var result = client.Execute<string>("Kingdee.K3.SCM.WebApi.ServicesStub.SaveXSaleOrderWebApi.SaveXSaleOrder", new object[] { parm });
<2>Postman测试验证:
5.1.先测试登陆接口,http://domain/k3cloud/Kingdee.bos.webapi.ServicesStub.authservice.validateuser.common.kdsvc
body录入json参数:{acctid:'账套Id', userName:'用户名', password:'用户密码', lcid:2052 }
5.2测试创建销售订单新变更单接口
http://domain/k3cloud/Kingdee.K3.SCM.WebApi.ServicesStub.SaveXSaleOrderWebApi.SaveXSaleOrder.common.kdsvc
body录入json参数:
{saveXSaleOrderArgs:{"SaleOrderBillNo":"XSDD000688","SaleOrderBillId":100827,"SOEntryIds":[102803,102804]}}
PostMan测试样例参考:
6.创建生成了销售订单新变更单后,就可以调用修改保存,修改数量、单价等:
6.1保存接口服务器地址:
http://domain/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
body录入json参数:
{"formid": "SAL_XORDER", "data": { "NeedReturnFields": [],
"Model": { "FID": "100169",
"FSaleOrderEntry": [ { "FEntryId": "100227", "FQty": "88" } , { "FEntryId": "100228", "FTaxPrice": "6.666" } ] }
} }
推荐阅读