|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册账号
×
各位高手,我写了个调用U8 API生成销售订单的程序。程序运行时没有报错,但就是没有生成销售订单。请高手看一下,我的代码是哪点出了错(代码用的是C#,U8版本是U8 V12.0):
string addresult;
try
{
//第一步:构造u8login对象并登陆(引用U8API类库中的Interop.U8Login.dll)
//如果当前环境中有login对象则可以省去第一步
U8Login.clsLogin u8Login = new U8Login.clsLogin();
String sSubId = "AS";
String sAccID = "(default)@999";
String sYear = DateTime.Now.Year.ToString();
String sUserID = "demo";
String sPassword = "1";
//String sDate = DateTime.Now.ToShortDateString();
string sDate = "2017-6-26";
String sServer = "10.0.1.15";
String sSerial = "";
if (!u8Login.Login(ref sSubId, ref sAccID, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial))
{
//Console.WriteLine("登陆失败,原因:" + u8Login.ShareString);
string errmsg = u8Login.ShareString;
Marshal.FinalReleaseComObject(u8Login);
throw new Exception(errmsg);
}
//第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数
U8EnvContext envContext = new U8EnvContext();
envContext.U8Login = u8Login;
//销售所有接口均支持内部独立事务和外部事务,默认内部事务
//如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false
//envContext.BizDbConnection = new ADO.Connection();
//envContext.IsIndependenceTransaction = false;
//设置上下文参数
envContext.SetApiContext("VoucherType",12); //上下文数据类型:int,含义:单据类型:12
//第三步:设置API地址标识(Url)
//当前API:新增或修改的地址标识为:U8API/SaleOrder/Save
U8ApiAddress myApiAddress = new U8ApiAddress("U8API/SaleOrder/Save");
//第四步:构造APIBroker
U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);
//第五步:API参数赋值
//给BO表头参数domHead赋值,此BO参数的业务类型为销售订单,属表头参数。BO参数均按引用传递
//提示:给BO表头参数domHead赋值有两种方法
//MSXML2.DOMDocument domHead = new MSXML2.DOMDocumentClass();
//方法一是直接传入MSXML2.DOMDocumentClass对象
//broker.AssignNormalValue("domHead", new MSXML2.DOMDocumentClass());
//方法二是构造BusinessObject对象,具体方法如下:
BusinessObject domHead = broker.GetBoParam("domHead");
domHead.RowCount = 1; //设置BO对象(表头)行数,只能为一行
domHead[0]["id"] = "1"; //主关键字段,int类型
domHead[0]["csocode"] = "20170201"; //订 单 号,string类型
domHead[0]["ddate"] = Convert.ToDateTime("2017-6-26"); //订单日期,DateTime类型
domHead[0]["cbustype"] = "12"; //业务类型,int类型
domHead[0]["cstname"] = "零售"; //销售类型,string类型
domHead[0]["ccusabbname"] = "合川李晓霞"; //客户简称,string类型
domHead[0]["cdepname"] = "渝中片区"; //销售部门,string类型
domHead[0]["itaxrate"] = "0"; //税率,double类型
domHead[0]["cexch_name"] = "人民币"; //币种,string类型
domHead[0]["cmaker"] = "demo"; //制单人,string类型
domHead[0]["breturnflag"] = "0"; //退货标志,string类型
domHead[0]["ufts"] = "20170626"; //时间戳,string类型
domHead[0]["cstcode"] = "22"; //销售类型编号,string类型
domHead[0]["cdepcode"] = "0100109"; //部门编码,string类型
domHead[0]["ccuscode"] = "JM0002"; //客户编码,string类型
domHead[0]["ccushand"] = ""; //客户联系人手机,string类型
domHead[0]["cpsnophone"] = ""; //业务员办公电话,string类型
domHead[0]["cpsnmobilephone"] = ""; //业务员手机,string类型
domHead[0]["cattachment"] = ""; //附件,string类型
domHead[0]["csscode"] = ""; //结算方式编码,string类型
domHead[0]["cssname"] = ""; //结算方式,string类型
domHead[0]["cinvoicecompany"] = ""; //开票单位编码,string类型
domHead[0]["cinvoicecompanyabbname"] = ""; //开票单位简称,string类型
domHead[0]["ccuspersoncode"] = ""; //联系人编码,string类型
domHead[0]["dclosedate"] = ""; //关闭日期,string类型
domHead[0]["dclosesystime"] = ""; //关闭时间,string类型
domHead[0]["bmustbook"] = ""; //必有定金,string类型
domHead[0]["fbookratio"] = ""; //定金比例,string类型
domHead[0]["cgathingcode"] = ""; //收款单号,string类型
domHead[0]["fbooksum"] = ""; //定金原币金额,string类型
domHead[0]["fbooknatsum"] = ""; //定金本币金额,string类型
domHead[0]["fgbooknatsum"] = ""; //定金累计实收本币金额,string类型
domHead[0]["fgbooksum"] = ""; //定金累计实收原币金额,string类型
domHead[0]["ccrmpersonname"] = ""; //相关员工,string类型
domHead[0]["csysbarcode"] = ""; //单据条码,string类型
domHead[0]["ioppid"] = ""; //销售机会ID,string类型
domHead[0]["contract_status"] = ""; //contract_status,string类型
domHead[0]["csvouchtype"] = ""; //来源电商,string类型
domHead[0]["bcashsale"] = ""; //现款结算,string类型
domHead[0]["iflowid"] = ""; //流程id,string类型
domHead[0]["cflowname"] = ""; //流程分支描述,string类型
domHead[0]["cchangeverifier"] = ""; //变更审批人,string类型
domHead[0]["dchangeverifydate"] = ""; //变更审批日期,string类型
domHead[0]["dchangeverifytime"] = ""; //变更审批时间,string类型
domHead[0]["cmemo"] = "test";
domHead[0]["cdefine13"] = "13112345678";
domHead[0]["cdefine14"] ="dde";
BusinessObject domBody = broker.GetBoParam("domBody");
domBody.RowCount = 1; //设置BO对象行数
domBody[0]["isosid"] = "1"; //主关键字段,int类型
domBody[0]["cinvname"] = "纯岸"; //存货名称,string类型
domBody[0]["cinvcode"] = "110501001"; //存货编码,string类型
domBody[0]["bfree2"] = "Z-008";
domBody[0]["bfree3"] = "电子商务";
domBody[0]["bfree4"] = "180*200*9";
domBody[0]["autoid"] = ""; //销售订单 2,int类型
domBody[0]["iquantity"] = 1.00; //数量,double类型
domBody[0]["dpredate"] = Convert.ToDateTime("2017-6-26"); //预发货日期,DateTime类型
domBody[0]["dpremodate"] = Convert.ToDateTime("2017-6-26"); //预完工日期,DateTime类型
domBody[0]["borderbom"] = ""; //是否订单BOM,int类型
domBody[0]["borderbomover"] = ""; //订单BOM是否完成,int类型
domBody[0]["id"] = "1"; //主表id,int类型
domBody[0]["iinvexchrate"] = ""; //换算率,double类型
domBody[0]["cunitid"] = ""; //销售单位编码,string类型
domBody[0]["cinva_unit"] = ""; //销售单位,string类型
domBody[0]["cinvm_unit"] = "06"; //主计量单位,string类型
domBody[0]["igrouptype"] = ""; //单位类型,uint类型
domBody[0]["cgroupcode"] = "11"; //计量单位组,string类型
domBody[0]["dreleasedate"] = ""; //预留失效日期,DateTime类型
domBody[0]["editprop"] = ""; //编辑属性:A表新增,M表修改,D表删除,string类型
domBody[0]["fstockquano"] = ""; //现存件数,string类型
domBody[0]["fcanusequano"] = ""; //可用件数,string类型
domBody[0]["iimid"] = ""; //进口订单明细行,string类型
domBody[0]["btracksalebill"] = ""; //PE跟单,string类型
domBody[0]["ccorvouchtype"] = ""; //来源单据类型,string类型
domBody[0]["ccorvouchtypename"] = ""; //来源单据名称,string类型
domBody[0]["icorrowno"] = ""; //来源单据行号,string类型
domBody[0]["fcanusequan"] = ""; //可用量,string类型
domBody[0]["fstockquan"] = ""; //现存量,string类型
domBody[0]["bsaleprice"] = "1100"; //报价含税,string类型
domBody[0]["bgift"] = ""; //赠品,string类型
domBody[0]["forecastdid"] = ""; //预测单子表ID,string类型
domBody[0]["cdetailsdemandcode"] = ""; //子件需求分类代号,string类型
domBody[0]["cdetailsdemandmemo"] = ""; //子件需求分类说明,string类型
domBody[0]["cbsysbarcode"] = ""; //单据行条码,string类型
domBody[0]["busecusbom"] = ""; //使用客户BOM,string类型
domBody[0]["bptomodel"] = ""; //bptomodel,string类型
domBody[0]["cparentcode"] = ""; //父节点编码,string类型
domBody[0]["cchildcode"] = ""; //子节点编码,string类型
domBody[0]["icalctype"] = ""; //发货模式,string类型
domBody[0]["fchildqty"] = ""; //使用数量,string类型
domBody[0]["fchildrate"] = ""; //权重比例,string类型
//broker.AssignNormalValue("domBody", new MSXML2.DOMDocumentClass());
broker.AssignNormalValue("VoucherState", 0);
broker.AssignNormalValue("vNewID", "");
//给普通参数DomConfig赋值。此参数的数据类型为MSXML2.IXMLDOMDocument2,此参数按引用传递,表示ATO,PTO选配
//broker.AssignNormalValue("DomConfig", new MSXML2.IXMLDOMDocument2());
//给普通参数domPosition赋值。此参数的数据类型为System.Object,此参数按引用传递,表示货位:传空
//broker.AssignNormalValue("domPosition", "");
//给普通参数cnnFrom赋值。此参数的数据类型为ADODB.Connection,此参数按引用传递,表示连接对象,如果由调用方控制事务,则需要设置此连接对象,否则传空
//broker.AssignNormalValue("cnnFrom", null);
//该参数VouchId为INOUT型普通参数。此参数的数据类型为System.String,此参数按值传递。在API调用返回时,可以通过GetResult("VouchId")获取其值
//broker.AssignNormalValue("VouchId", "");
//该参数domMsg为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数
//MSXML2.IXMLDOMDocument2 domMsg = new MSXML2.DOMDocumentClass();
//broker.AssignNormalValue("domMsg", domMsg);
//给普通参数bCheck赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否控制可用量。
//broker.AssignNormalValue("bCheck", false);
//给普通参数bBeforCheckStock赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示检查可用量
//broker.AssignNormalValue("bBeforCheckStock", false);
//给普通参数bIsRedVouch赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否红字单据
//broker.AssignNormalValue("bIsRedVouch", false);
//给普通参数sAddedState赋值。此参数的数据类型为System.String,此参数按值传递,表示传空字符串
//broker.AssignNormalValue("sAddedState", "");
//给普通参数bReMote赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否远程:转入false
//broker.AssignNormalValue("bReMote", false);
//第六步:调用API
if (!broker.Invoke())
{
//错误处理
Exception apiEx = broker.GetException();
if (apiEx != null)
{
if (apiEx is MomSysException)
{
MomSysException sysEx = apiEx as MomSysException;
Console.WriteLine("系统异常:" + sysEx.Message);
MessageBox.Show(sysEx.Message);
//todo:异常处理
}
else if (apiEx is MomBizException)
{
MomBizException bizEx = apiEx as MomBizException;
//Console.WriteLine("API异常:" + bizEx.Message);
MessageBox.Show(bizEx.Message);
//todo:异常处理
}
//异常原因
String exReason = broker.GetExceptionString();
if (exReason.Length != 0)
{
Console.WriteLine("异常原因:" + exReason);
MessageBox.Show(exReason);
}
}
//结束本次调用,释放API资源
broker.Release();
//MessageBox.Show("ok");
}
//第七步:获取返回结果
//获取返回值
//获取普通返回值。此返回值数据类型为System.String,此参数按值传递,表示成功为空串
System.String result = broker.GetReturnValue() as System.String;
//获取out/inout参数值
//获取普通INOUT参数vNewID。此返回值数据类型为string,在使用该参数之前,请判断是否为空
string vNewIDRet = broker.GetResult("vNewID") as string;
//结束本次调用,释放API资源
broker.Release();
return;
}
catch (Exception ex)
{
//return new ReturnJsonValue("error", ex.Message, 0, null);
//return "error";
MessageBox.Show ( ex.Message);
}
|
|