有很多客户需求在后台自动生成某张单据,金蝶云星空提供了WebApi,包含了保存,提交,审核,删除单据的接口,下面以生产订单的保存,提交,审核为例,说明一下应用WebApi后台自动生成生产订单的功能,下面是代码示例,其他单据可以根据示例代码做相应的修改:
using Kingdee.BOS.Core.Bill.PlugIn;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kingdee.BOS;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.ControlElement;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Resource;
using Kingdee.BOS.Util;
//using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Msg;
using Kingdee.BOS.Orm.Drivers;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.DataEntity;
using System.ComponentModel;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using System.Data;
using Newtonsoft.Json.Linq;
using Kingdee.BOS.WebApi.Client;
using Newtonsoft.Json;
public class DisProOrder : AbstractBillPlugIn
{
K3CloudApiClient client = new K3CloudApiClient("http://X.X.X.X:XXX/K3Cloud/");//参数是K3/Cloud的URL
//传入的参数根据需求来自行修改
public void SaveBill(DataSet ds, string OrderQty, string TouLiaoQty,int billno)
{
DataSet dstemp = new DataSet();
DataTable dtTemp = new DataTable();
string result = "";
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count == 0)
{
}
else
{
#region 保存生产订单信息
try
{
// 开始构建Web API参数对象
// 参数根对象:包含Creator、NeedUpDateFields、Model这三个子参数
// using Newtonsoft.Json.Linq; // (需引用Newtonsoft.Json.dll)
JObject jsonRoot = new JObject();
// Creator: 创建用户
jsonRoot.Add("CREATOR", "administrator");
// NeedUpDateFields: 哪些字段需要更新?为空则表示参数中全部字段,均需要更新
jsonRoot.Add("NEEDUPDATEFIELDS", new JArray(""));
jsonRoot.Add("NEEDRETURNFIELDS", new JArray(""));
jsonRoot.Add("ISDELETEENTRY", "TRUE");
jsonRoot.Add("SUBSYSTEMID", "");
// Model: 单据详细数据参数
JObject model = new JObject();
jsonRoot.Add("Model", model);
// 开始设置单据字段值
// 必须设置的字段:主键、单据类型、主业务组织,各必录且没有设置默认值的字段
// 特别注意:字段Key大小写是敏感的,建议从BOS设计器中,直接复制字段的标识属性过来
// 单据主键:必须填写,系统据此判断是新增还是修改单据;新增单据,填0
model.Add("FID", "0");
JObject basedata = new JObject();
//单据编号
model.Add("FBillNo", this.View.Model.GetValue("FBillNo").ToString()+billno.ToString("000"));
//单据类型
if (this.View.Model.GetValue("FBillType").ToString() != "")
{
basedata = new JObject();
DynamicObject BillType = this.View.Model.GetValue("FBillType") as DynamicObject;
string BillTypeNO = BillType["number"].ToString();
basedata.Add("FNumber", BillTypeNO);
model.Add("FBillType", basedata);
}
//单据日期
model.Add("FDate", this.View.Model.GetValue("FDate").ToString());
//生产组织
if (this.View.Model.GetValue("FPrdOrgId").ToString() != "")
{
basedata = new JObject();
DynamicObject FPrdOrg = this.View.Model.GetValue("FPrdOrgId") as DynamicObject;
string FPrdOrgNO = FPrdOrg["number"].ToString();
basedata.Add("FNumber", FPrdOrgNO);
model.Add("FPrdOrgId", basedata);
}
//计划组:FWorkGroupId
if (ds.Tables[0].Rows[0]["FWORKGROUPID"].ToString() != "0")
{
&