public override void SetApiContext(U8EnvContext envContext) { string strBillType = string.Empty; string strVoucherType = string.Empty; strVoucherType = SetVouchType(); switch (strVoucherType) { case "1": strBillType = ""; break; case "2": strBillType = "0"; break; case "0": strBillType = ""; break; default: strBillType = ""; break; } envContext.SetApiContext("VoucherType", SetVouchType()); //上下文数据类型:int,含义:单据类型,采购请购单 0 envContext.SetApiContext("bPositive", true); //上下文数据类型:bool,含义:红蓝标识:True,蓝字 envContext.SetApiContext("sBillType", strBillType); //上下文数据类型:string,含义:为空串 envContext.SetApiContext("sBusType", "普通采购"); }
/// <summary> /// 获取apibroker /// </summary> /// <param name="apidata"></param> /// <param name="u8Login"></param> /// <param name="broker"></param> /// <returns></returns> public Model.DealResult GetU8ApiBroker(Model.APIData apidata, U8Login.clsLogin u8Login, out U8ApiBroker broker, string op) { broker = null; Model.DealResult dr = new Model.DealResult(); switch (op) { case "add": apidata.ApiAddress = SetApiAddressAdd(); break; case "delete": apidata.ApiAddress = SetApiAddressDelete(); break; case "audit": apidata.ApiAddress = SetApiAddressAudit(); break; case "load": apidata.ApiAddress = SetApiAddressLoad(); break; case "cancelaudit": apidata.ApiAddress = SetApiAddressCancelAudit(); break; case "update": apidata.ApiAddress = SetApiAddressUpdate(); break; } try { U8EnvContext envContext = new U8EnvContext(); envContext.U8Login = u8Login; SetApiContext(envContext); U8ApiAddress myApiAddress = new U8ApiAddress(apidata.ApiAddress); broker = new U8ApiBroker(myApiAddress, envContext); } catch (Exception ex) { dr.ResultNum = -1; dr.ResultMsg = ex.ToString(); throw new Exception(dr.ResultMsg); } return(dr); }
private void button2_Click(object sender, EventArgs e) { U8EnvContext envContext = new U8EnvContext(); envContext.U8Login = u8Login; U8ApiAddress myApiAddress = new U8ApiAddress("装载单据的地址标识"); //构造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); //API参数赋值 broker.AssignNormalValue("参数名", "参数值"); //调用LOAD接口API if (!broker.Invoke()) { //错误处理 Exception apiEx = broker.GetException(); if (apiEx != null) { if (apiEx is MomSysException) { MomSysException sysEx = apiEx as MomSysException; Console.WriteLine("系统异常:" + sysEx.Message); //todo:异常处理 } else if (apiEx is MomBizException) { MomBizException bizEx = apiEx as MomBizException; Console.WriteLine("API异常:" + bizEx.Message); //todo:异常处理 } } //结束本次调用,释放API资源 broker.Release(); return; } //获取表头或表体的BO对象,如果要取原始的XMLDOM对象结果,请使用GetResult(参数名) BusinessObject DomRet = broker.GetBoParam("表头或表体参数名"); //修改获取的BO对象,对需要更改的字段重新赋值 DomRet[0]["字段名"] = "新的字段值"; //获取普通返回值 System.String result = broker.GetReturnValue() as System.String; //获取out/inout参数值 //结束本次调用,释放API资源 broker.Release(); }
public override void SetApiContext(U8EnvContext envContext) { }
public override void SetApiContext(U8EnvContext envContext) { envContext.SetApiContext("VoucherType", SetVouchType()); }
public abstract void SetApiContext(U8EnvContext envContext);
public string InvokeU8Api(string method,string content) { string retstr = ""; try { string AccCode = ReadXmlData("Detail", "AccCode"); string User = ReadXmlData("Detail", "User"); string Password = ReadXmlData("Detail", "Password"); string Server = ReadXmlData("Detail", "Server"); string ServiceURL = ReadXmlData("Detail", "ServiceURL"); string ServiceName = "ZhengShanWsIPort";// ZhengShanWsIService ReadXmlData("Detail", "ServiceName"); ulogin = new U8Login.clsLogin(); U8Login.clsLogin u8Login = new U8Login.clsLogin(); // string taskid = clslogin.GetTaskID("DP"); String sSubId = "DP";//AS DP String sAccId = AccCode; String sYear = DateTime.Now.Year.ToString(); String sUserID = User; String sPassword = Password; String sDate = DateTime.Now.ToShortDateString(); String sServer = Server;//USER-20150630LA String sSerial = ""; if (u8Login.Login(ref sSubId, ref sAccId, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial)) { setConnStr(u8Login.UfDbName); //retstr = "login ok!"; } else { retstr = u8Login.ShareString; Marshal.FinalReleaseComObject(u8Login); return retstr; } if(method.Equals("secret")) return u8Login.UfDbName; string api = ""; if (method.Equals("TransVouchAdd"))//调拨单生成 { api = "U8API/TransVouch/Add"; } else if (method.Equals("audit"))//调拨单审核 { api = "U8API/TransVouch/Audit"; } else if (method.Equals("load"))//调拨申请单查询 { api = "U8API/TransRequestVouch/Load"; }else if (method.Equals("OutboundOrderAdd")) api = "U8API/saleout/Add"; if (method.Equals("InventoryQTY")) { DataTable dt = getSqlData("select cinvcode,cwhcode,iquantity,fAvaQuantity from currentstock where cinvcode='" + content + "'"); if (dt != null && dt.Rows.Count > 0) { StringBuilder sb = new StringBuilder(); sb.Append("<?xml version='1.0' encoding='UTF-8'?><DATA>"); for (int i = 0; i < dt.Rows.Count; i++) { sb.Append("<RECORD>"); sb.Append("<CINVCODE>"); sb.Append(dt.Rows[i][0].ToString()); sb.Append("</CINVCODE>"); sb.Append("<CWHCODE>"); sb.Append(dt.Rows[i][1].ToString()); sb.Append("</CWHCODE>"); sb.Append("<IQUANTITY>"); sb.Append(dt.Rows[i][2].ToString()); sb.Append("</IQUANTITY>"); sb.Append("<FAVAQUANTITY>"); sb.Append(dt.Rows[i][3].ToString()); sb.Append("</FAVAQUANTITY>"); sb.Append("</RECORD>"); } sb.Append("</DATA>"); //ZhengShanWsIClient c = new ZhengShanWsIClient(ServiceName, ServiceURL);//"http://192.168.1.122:8081/freshBeef/ws/zhengShanWs" //string result = c.inventory(sb.ToString()); return sb.ToString(); }else return "查不到现存量信息"; } if (method.Equals("Inventory")) { DataTable dt = getSqlData("select cinvcode,cinvname,cinvstd,cinvccode,cComunitcode,CBARCODE,null as CISGIFT,null as gd_is_gift,iInvSaleCost,null as GD_IS_GIFT from Inventory where cinvcode='" + content + "'"); if (dt != null && dt.Rows.Count > 0) { StringBuilder sb = new StringBuilder(); sb.Append("<DATA>");//<?xml version='1.0' encoding='UTF-8'?> for (int i = 0; i < dt.Rows.Count; i++) { sb.Append("<RECORD>"); sb.Append("<CINVCODE>"); sb.Append(dt.Rows[i][0].ToString()); sb.Append("</CINVCODE>"); sb.Append("<CINVNAME>"); sb.Append(dt.Rows[i][1].ToString()); sb.Append("</CINVNAME>"); sb.Append("<CINVSTD>"); sb.Append(dt.Rows[i][2].ToString()); sb.Append("</CINVSTD>"); sb.Append("<CINVCCODE>"); sb.Append(dt.Rows[i][3].ToString()); sb.Append("</CINVCCODE>"); sb.Append("<CCOMUNITCODE>"); sb.Append(dt.Rows[i][4].ToString()); sb.Append("</CCOMUNITCODE>"); sb.Append("<CBARCODE>"); sb.Append(dt.Rows[i][5].ToString()); sb.Append("</CBARCODE>"); sb.Append("<CISGIFT>"); sb.Append(dt.Rows[i][6].ToString()); sb.Append("</CISGIFT>"); sb.Append("<IINVSALECOST>"); sb.Append(dt.Rows[i][7].ToString()); sb.Append("</IINVSALECOST>"); sb.Append("<GD_IS_GIFT>"); sb.Append(dt.Rows[i][8].ToString()); sb.Append("</GD_IS_GIFT>"); sb.Append("</RECORD>"); } sb.Append("</DATA>"); //ZhengShanWsIClient c = new ZhengShanWsIClient(ServiceName, ServiceURL);//"http://192.168.1.122:8081/freshBeef/ws/zhengShanWs" //string result = c.inventory(sb.ToString()); return sb.ToString(); } else return "查不到存货信息"; } if (method.Equals("InventoryClass")) { DataTable dt = getSqlData("select CINVCCODE,CINVCNAME,(select cInvCCode from InventoryClass b where b.iInvCGrade+1=h.iInvCGrade and LEFT(h.cinvccode,LEN(b.cinvccode))=b.cinvccode) as CINVCCODE_F from inventoryclass h "); string str = ""; str += "<DATA>"; for (int i = 0; i < dt.Rows.Count; i++) { str += "<RECORD>"; str += GetXmlTag("CINVCCODE", dt.Rows[i]["CINVCCODE"].ToString()); str += GetXmlTag("CINVCNAME", dt.Rows[i]["CINVCCODE"].ToString()); str += GetXmlTag("CINVCCODE_F", dt.Rows[i]["CINVCCODE_F"].ToString()); str += "</RECORD>"; } str += "</DATA>"; //return PostData(null, content); ZhengShanWsIClient c = new ZhengShanWsIClient(content, ServiceURL);//"http://192.168.1.122:8081/freshBeef/ws/zhengShanWs" return c.InventoryClass(str); } U8EnvContext envContext = new U8EnvContext(); envContext.U8Login = u8Login; //string method = "audit"; U8ApiAddress myApiAddress = new U8ApiAddress(api); U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); MSXML2.DOMDocument domMsg = new MSXML2.DOMDocument(); if (method.Equals("TransVouchAdd")) { broker.AssignNormalValue("sVouchType", "12"); BusinessObject DomHead = broker.GetBoParam("DomHead"); DomHead.RowCount = 1; XmlDocument xml = new XmlDocument(); //xml.LoadXml(content.Trim()); xml.Load("c:\\DATA.xml"); XmlNodeList xnList = xml.SelectNodes("/DATA/ORDER/ORDERID/DETAIL"); foreach (XmlNode xn in xnList) { retstr += "开始读取XML"; string VOUCHID = xn["VOUCHID"].InnerText; string VOUCHDATE = xn["VOUCHDATE"].InnerText; //DomHead[0]["id"] = "2"; //主关键字段,int类型 DomHead[0]["ctvcode"] = VOUCHID; //单据号,string类型 DomHead[0]["dtvdate"] = VOUCHDATE; //日期,DateTime类型 DataTable dt = getSqlData("select cwhcode from warehouse where cwhname='" + xn["OWHNAME"].InnerText+"'"); if (dt.Rows.Count > 0) DomHead[0]["cowhcode"] = dt.Rows[0][0].ToString(); dt = getSqlData("select cwhcode from warehouse where cwhname='" + xn["IWHNAME"].InnerText + "'"); if (dt.Rows.Count > 0) DomHead[0]["ciwhcode"] = dt.Rows[0][0].ToString(); DomHead[0]["cwhname"] = xn["OWHNAME"].InnerText; //转出仓库,string类型 DomHead[0]["cwhname_1"] = xn["IWHNAME"].InnerText; //转入仓库,string类型 //DomHead[0]["ciwhcode"] = "2";//转入仓库编码,string类型 //DomHead[0]["cowhcode"] = "1"; //转出仓库编码,string类型 //DomHead[0]["cordcode"] = "2"; //出库类别编码,string类型 //DomHead[0]["cirdcode"] = "1"; //入库类别编码,string类型 //DomHead[0]["crdname_1"] = "销售出库";//出库类别 //DomHead[0]["crdname"] = "采购入库";//入库类别 //DomHead[0]["cdepname_1"] = "采购部"; //DomHead[0]["cdepname"] = "销售部"; //DomHead[0]["codepcode"] = "1"; //DomHead[0]["cidepcode"] = "2"; //DomHead[0]["cpersoncode"] = "1"; DomHead[0]["cpersonname"] = xn["PERSON"].InnerText;//经手人 dt = getSqlData("select cPersonCode from Person where cPersonName='" + xn["PERSON"].InnerText + "'"); if (dt.Rows.Count > 0) DomHead[0]["cpersoncode"] = dt.Rows[0][0].ToString(); //DomHead[0]["iamount"] = "";//现存量 DomHead[0]["dnmaketime"] = DateTime.Now; DomHead[0]["ctvmemo"] = xn["MEMO"].InnerText; DomHead[0]["cinvname"] = xn["CINVNAME"].InnerText; //DomHead[0]["iavaquantity"] = "80"; 可用量 DomHead[0]["csource"] = "1"; //1 -- 库存 2 -- 零售 3 -- 预留 DomHead[0]["cmaker"] = User; DomHead[0]["csource"] = "1"; DomHead[0]["itransflag"] = "正向"; DomHead[0]["vt_id"] = 89; DomHead[0]["dnmaketime"] = DateTime.Now.ToLongDateString(); //DomHead[0]["ufts"] = " 275.5169"; DomHead[0]["btransflag"] = false; BusinessObject domBody = broker.GetBoParam("domBody"); domBody.RowCount = 1; //domBody[0]["autoid"] = "2"; //主关键字段,int类型 domBody[0]["cinvcode"] = xn["CINVCODE"].InnerText;//存货编码,string类型 domBody[0]["cinvname"] = xn["CINVNAME"].InnerText; //domBody[0]["cinvstd"] = ""; domBody[0]["itvquantity"] =getDouble(xn["QTY"].InnerText); //数量,double类型 DataTable dt3 = getSqlData("select cComUnitCode from inventory where cinvcode='" + xn["CINVCODE"].InnerText + "'"); //domBody[0]["itvnum"] = 0.1; domBody[0]["ctvbatch"] = ""; if (dt3.Rows.Count > 0) { domBody[0]["cinvm_unit"] = dt3.Rows[0][0].ToString(); //domBody[0]["cinva_unit"] = "4"; //domBody[0]["cassunit"] = "4"; } domBody[0]["iexpiratdatecalcu"] = 0; domBody[0]["issotype"] = 0; domBody[0]["idsotype"] = 0; domBody[0]["isoseq"] = ""; domBody[0]["idsoseq"] = ""; domBody[0]["issodid"] = ""; domBody[0]["idsodid"] = ""; domBody[0]["cinvaddcode"] = ""; domBody[0]["corufts"] = " "; domBody[0]["cdsocode"] = ""; domBody[0]["csocode"] = ""; domBody[0]["bcosting"] = "1"; domBody[0]["cposition"] = ""; //domBody[0]["iinvexchrate"] = 100; domBody[0]["ctvcode"] = VOUCHID; domBody[0]["fsalecost"] = getDouble(xn["UNITPRICE"].InnerText) * getDouble(xn["QTY"].InnerText); domBody[0]["fsaleprice"] = getDouble(xn["UNITPRICE"].InnerText); //domBody[0]["itvpcost"] = getDouble(xn["itvpcost"].InnerText); ; domBody[0]["itvaprice"] = 0; domBody[0]["itvpprice"] = 0; domBody[0]["itvacost"] = 0; //domBody[0]["igrossweight"] = "3"; //domBody[0]["inetweight"] = "1"; domBody[0]["editprop"] = "A"; retstr += "读取XML完成"; } broker.AssignNormalValue("domPosition", null); broker.AssignNormalValue("errMsg", ""); broker.AssignNormalValue("cnnFrom", null); broker.AssignNormalValue("VouchId", ""); broker.AssignNormalValue("domMsg", domMsg); broker.AssignNormalValue("bCheck", false); broker.AssignNormalValue("bBeforCheckStock", false); broker.AssignNormalValue("bIsRedVouch", false); broker.AssignNormalValue("sAddedState", ""); broker.AssignNormalValue("bReMote", false); } if (method.Equals("OutboundOrderAdd")) { broker.AssignNormalValue("sVouchType", "32");//新增0 修改1 broker.AssignNormalValue("domPosition", null); broker.AssignNormalValue("errMsg", ""); broker.AssignNormalValue("cnnFrom", null); broker.AssignNormalValue("VouchId", ""); broker.AssignNormalValue("domMsg", domMsg); broker.AssignNormalValue("bCheck", false); broker.AssignNormalValue("bBeforCheckStock", false); broker.AssignNormalValue("bIsRedVouch", false); broker.AssignNormalValue("sAddedState", ""); broker.AssignNormalValue("bReMote", false); BusinessObject DomHead = broker.GetBoParam("DomHead"); DomHead.RowCount = 1; XmlDocument xml = new XmlDocument(); xml.LoadXml(content.Trim()); XmlNodeList xnList = xml.SelectNodes("/DATA/ORDER/ORDERID/DETAIL"); foreach (XmlNode xn in xnList) { string VOUCHID = xn["VOUCHID"].InnerText; string VOUCHDATE = xn["VOUCHDATE"].InnerText; } BusinessObject domBody = broker.GetBoParam("domBody"); domBody.RowCount = 1; } if (method.Equals("audit"))//调拨单审核 { DataTable dt = getSqlData("select CONVERT(money,ufts) as ufts from transvouch where cTVCode='" + content + "'"); double ufts = 0; //string ts = ""; if (dt.Rows.Count > 0) { //DataTable dt2 = getSqlData("select convert(timestamp,CONVERT(money," + String.Format("{0,30}", String.Format("{0:0.0000}", ufts)) + ")) as ufts "); ufts = double.Parse(dt.Rows[0][0].ToString()); //ts = dt2.Rows[0][0].ToString(); } else return "找不到此调拨单号:"+content; broker.AssignNormalValue("sVouchType", "12"); broker.AssignNormalValue("VouchId", content);//单据号 broker.AssignNormalValue("errMsg", ""); broker.AssignNormalValue("cnnFrom", null); broker.AssignNormalValue("TimeStamp", String.Format("{0,30}", String.Format("{0:0.0000}", ufts)));// " 275.5210" broker.AssignNormalValue("domMsg", domMsg);//new MSXML2.DOMDocument() broker.AssignNormalValue("bCheck", false); broker.AssignNormalValue("bBeforCheckStock", false); broker.AssignNormalValue("bList", false); broker.AssignNormalValue("MakeWheres", null); broker.AssignNormalValue("sWebXml", ""); broker.AssignNormalValue("oGenVouchIds", null); } if (method.Equals("load")) { broker.AssignNormalValue("sVouchType", "62"); broker.AssignNormalValue("sWhere", " VouchId='0000000001'"); broker.AssignNormalValue("bGetBlank", false); broker.AssignNormalValue("sBodyWhere_Order", "cInvcode"); broker.AssignNormalValue("errMsg", ""); broker.AssignNormalValue("domPos", domMsg); BusinessObject obj = broker.GetBoParam("domHead"); BusinessObject obj1 = broker.GetBoParam("domBody"); } if (method.Equals("submitTransRequestBill")) { string sql = "select h.cTVCode AS VOUCHID,h.dTVDate AS VOUCHDATE,wo.cwhname as OWHNAME,wo.cwhname as IWHNAME,h.cMaker as PERSON,B.CINVCODE,i.CINVNAME,B.ITVQUANTITY AS QTY,B.iUnitCost AS UNITPRICE,B.cbMemo AS MEMO"; sql += "from ST_AppTransVouch h,ST_AppTransVouchs b,Inventory i,warehouse wi,warehouse wo"; sql += "where h.ID = b.ID and i.cinvcode = b.cinvcode and wi.cwhcode = h.cIWhCode and wo.cwhcode = h.cOWhCode "; sql += "and h.cTVCode='"+content+"'"; DataTable dt3 = getSqlData(sql); if (dt3.Rows.Count == 0) return "查不到调拨申请单:"+content; string xml = "<?xml version='1.0' encoding='UTF-8'?>\n"; xml += "<DATA>\n"; xml += "<ORDER>\n"; xml += "<ORDERID>\n"; xml += "<DETAIL>\n"; xml += GetXmlTag("VOUCHID", IsNull(dt3.Rows[0]["VOUCHID"])); xml += GetXmlTag("VOUCHDATE", IsNull(dt3.Rows[0]["VOUCHDATE"])); xml += GetXmlTag("OWHNAME", IsNull(dt3.Rows[0]["OWHNAME"])); xml += GetXmlTag("IWHNAME", IsNull(dt3.Rows[0]["IWHNAME"])); xml += GetXmlTag("PERSON", IsNull(dt3.Rows[0]["PERSON"])); xml += GetXmlTag("VOUCHID", IsNull(dt3.Rows[0]["VOUCHID"])); xml += GetXmlTag("CINVCODE", IsNull(dt3.Rows[0]["CINVCODE"])); xml += GetXmlTag("CINVNAME", IsNull(dt3.Rows[0]["CINVNAME"])); xml += GetXmlTag("QTY", IsNull(dt3.Rows[0]["QTY"])); xml += GetXmlTag("UNITPRICE", IsNull(dt3.Rows[0]["UNITPRICE"])); xml += GetXmlTag("MEMO", IsNull(dt3.Rows[0]["MEMO"])); xml += "\n</DETAIL>"; xml += "\n</ORDERID>"; xml += "\n</ORDER>"; xml += "\n</DATA>"; return PostData(null, content); //ZhengShanWsIClient c = new ZhengShanWsIClient(ServiceName, ServiceURL);//"http://192.168.1.122:8081/freshBeef/ws/zhengShanWs" //return c.ST_AppTransVouchAdd(xml); } retstr += "开始调用"; if (!broker.Invoke()) { retstr += "调用失败:"; //错误处理 Exception apiEx = broker.GetException(); if (apiEx != null) { if (apiEx is MomSysException) { MomSysException sysEx = apiEx as MomSysException; //Console.WriteLine("系统异常:" + sysEx.Message); retstr = sysEx.Message + "[MomSysException]"; //todo:异常处理 } else if (apiEx is MomBizException) { MomBizException bizEx = apiEx as MomBizException; //Console.WriteLine("API异常:" + bizEx.Message); retstr = bizEx.Message + "[MomBizException]"; //todo:异常处理 } } //结束本次调用,释放API资源 broker.Release(); //return; } else { retstr += "调用成功:"; if (method.Equals("load")) { System.String result = broker.GetReturnValue() as System.String; if (string.IsNullOrEmpty(result)) { retstr += "加载调拨申请单成功!"; //Console.WriteLine("加载销售订单成功!"); //获取out/inout参数值 //MSXML2.XMLDocument xmlResult = broker.GetResult("domHead") as MSXML2.XMLDocument; MSXML2.DOMDocumentClass xmlHead = broker.GetResult("DomHead") as MSXML2.DOMDocumentClass; xmlHead.save("TransRequestVouchHead.xml"); //out参数domBody为BO对象(表体),此BO对象的业务类型为销售订单。BO参数均按引用传递,具体请参考服务接口定义 //如果要取原始的XMLDOM对象结果,请使用GetResult() MSXML2.DOMDocumentClass xmlBody = broker.GetResult("domBody") as MSXML2.DOMDocumentClass; xmlBody.save("TransRequestVouchBody.xml"); } else { retstr += "加载调拨申请单失败!"; //Console.WriteLine("加载销售订单失败!"); } }else retstr+=broker.GetResult("errMsg"); } } catch (Exception e) { retstr += "异常:" + e.Message+"\n"+e.StackTrace; return retstr; //throw; } return retstr; }
public static string InsertProduct(DataTable dthead, DataTable dtbody) { U8EnvContext envContext = new U8EnvContext(); envContext.U8Login = canshu.u8Login; //envContext.U8Login = u8Login; //第三步:设置API地址标识(Url) //当前API:添加新单据的地址标识为:U8API/MaterialOut/Add U8ApiAddress myApiAddress = new U8ApiAddress("U8API/ARClose/SaveVouch"); //第四步:构造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); //第五步:API参数赋值 ////给普通参数sVouchType赋值。此参数的数据类型为System.String,此参数按值传递,表示单据类型:11 //broker.AssignNormalValue("sVouchType", "11"); ////该参数VouchId为INOUT型普通参数。此参数的数据类型为System.String,此参数按值传递。在API调用返回时,可以通过GetResult("VouchId")获取其值 //string vouid = ""; //broker.AssignNormalValue("VouchId", vouid); ////该参数domMsg为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数 MSXML2.IXMLDOMDocument2 domMsg = new MSXML2.DOMDocumentClass(); broker.AssignNormalValue("domMsg", domMsg); ////给普通参数bCheck赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否控制可用量。 //broker.AssignNormalValue("bCheck", true); ////给普通参数bBeforCheckStock赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示检查可用量 //broker.AssignNormalValue("bBeforCheckStock", true); ////给普通参数bIsRedVouch赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否红字单据 //broker.AssignNormalValue("bIsRedVouch", false); ////给普通参数sAddedState赋值。此参数的数据类型为System.String,此参数按值传递,表示传空字符串 //string sadd = ""; //broker.AssignNormalValue("sAddedState", sadd); ////给普通参数bReMote赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否远程:转入false //broker.AssignNormalValue("bReMote", false); //打开adodb连接 Connection oCon = new ConnectionClass(); oCon.Open(envContext.U8Login.UfDbName); MSXML2.IXMLDOMDocument2 domhead = new DOMDocument(); MSXML2.IXMLDOMDocument2 dombody = new DOMDocument(); //表头赋值 //表头DOM赋值 string sqlt = "select cast(null as nvarchar(2)) as editprop,* from AR_CloseR where 1=2 "; Recordset rs = new Recordset(); rs.Open(sqlt, oCon, CursorTypeEnum.adOpenForwardOnly, LockTypeEnum.adLockReadOnly); rs.Save(domhead, PersistFormatEnum.adPersistXML); //插入表头信息 IXMLDOMElement eleHead = (IXMLDOMElement)domhead.selectSingleNode("//rs:data"); IXMLDOMElement ele = (IXMLDOMElement)domhead.createElement("z:row"); eleHead.appendChild(ele); try { ele.setAttribute("editprop", "A");//A代表增加,M代表修改 ele.setAttribute("dVouchDate", DateTime.Now.ToShortDateString()); ele.setAttribute("cdwcode", "0999"); //ele.setAttribute("id", rdid); ele.setAttribute("ccode", "100"); ele.setAttribute("VT_ID", "65"); ele.setAttribute("ddate", DateTime.Now.ToShortDateString()); //出库日期 ele.setAttribute("dnmaketime", DateTime.Now.ToString()); //制单日期 ele.setAttribute("cmemo", "下料生成"); //备注 ele.setAttribute("cmaker", canshu.u8Login.cUserName); //制单人 broker.AssignNormalValue("DomHead", domhead); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误发生", MessageBoxButtons.OK, MessageBoxIcon.Error); return("0"); } //表体赋值 string sqlw = "select cast(null as nvarchar(2)) as editprop,* from recordoutsq where 1=2 "; //Recordset rs = new Recordset(); rs.Close(); rs.Open(sqlw, oCon, CursorTypeEnum.adOpenForwardOnly, LockTypeEnum.adLockReadOnly); rs.Save(dombody, PersistFormatEnum.adPersistXML); //插入表体尾信息 //dombody.rowcount = IXMLDOMElement eleBody = (IXMLDOMElement)dombody.selectSingleNode("//rs:data"); for (int i = 0; i < dtbody.Rows.Count; i++) { ele = (IXMLDOMElement)dombody.createElement("z:row"); eleBody.appendChild(ele); // 表尾赋值 //string cinvcode = "01019002063"; //int autoid = 1000; //decimal sl = 4m; try { ele.setAttribute("editprop", "A"); //ele.setAttribute("autoid", autoid); ele.setAttribute("cinvcode", DbHelper.GetDbString(dtbody.Rows[i]["存货编码"])); if (string.IsNullOrEmpty(DbHelper.GetDbString(dtbody.Rows[i]["lotno"])) != true) { ele.setAttribute("cBatch", DbHelper.GetDbString(dtbody.Rows[i]["lotno"])); } ele.setAttribute("iquantity", DbHelper.GetDbString(dtbody.Rows[i]["本次下料"])); //MessageBox.Show(dtbody.Rows[i]["本次下料"].ToString()); ele.setAttribute("iMPoIds", DbHelper.GetDbInt(dtbody.Rows[i]["allocateid"])); ele.setAttribute("cmocode", DbHelper.GetDbString(dthead.Rows[0]["染料单号"])); ele.setAttribute("inquantity", DbHelper.GetDbdecimal(dtbody.Rows[i]["未下数量"])); //未下应下数量 //生产订单信息 ele.setAttribute("invcode", DbHelper.GetDbString(dthead.Rows[0]["色号"])); ele.setAttribute("imoseq", DbHelper.GetDbString(dthead.Rows[0]["sortseq"])); ele.setAttribute("iopseq", DbHelper.GetDbString(dtbody.Rows[i]["opseq"])); ele.setAttribute("copdesc", DbHelper.GetDbString(dtbody.Rows[i]["工序"])); ele.setAttribute("iExpiratDateCalcu", 0); ele.setAttribute("irowno", i + 1); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误发生", MessageBoxButtons.OK, MessageBoxIcon.Error); return("0"); } } broker.AssignNormalValue("DomBody", dombody); //测试结果 //domhead.save(@"d:\2xml"); //dombody.save(@"d:\3.xm.l"); //第六步:调用API if (!broker.Invoke()) { //错误处理 Exception apiEx = broker.GetException(); if (apiEx != null) { if (apiEx is MomSysException) { MomSysException sysEx = apiEx as MomSysException; MessageBox.Show("系统异常:" + sysEx.Message); //todo:异常处理 } else if (apiEx is MomBizException) { MomBizException bizEx = apiEx as MomBizException; MessageBox.Show("API异常:" + bizEx.Message); //todo:异常处理 } //异常原因 String exReason = broker.GetExceptionString(); if (exReason.Length != 0) { MessageBox.Show("异常原因:" + exReason); } } //结束本次调用,释放API资源 broker.Release(); return("0"); } //第七步:获取返回结果 //获取返回值 //获取普通返回值。此返回值数据类型为System.Boolean,此参数按值传递,表示返回值:true:成功,false:失败 System.Boolean result = Convert.ToBoolean(broker.GetReturnValue()); if (result == false) { //获取普通OUT参数errMsg。此返回值数据类型为System.String,在使用该参数之前,请判断是否为空 System.String errMsgRet = broker.GetResult("errMsg") as System.String; if (errMsgRet != null) { MessageBox.Show(errMsgRet.ToString(), "错误提示1!"); } return("2"); //MessageBox.Show(result.ToString(), "导入成功提示"); } ////获取out/inout参数值 ////获取普通OUT参数errMsg。此返回值数据类型为System.String,在使用该参数之前,请判断是否为空 //System.String errMsgRet = broker.GetResult("errMsg") as System.String; //if (errMsgRet != null) // MessageBox.Show(errMsgRet.ToString(), "错误提示1!"); ////获取普通INOUT参数VouchId。此返回值数据类型为System.String,在使用该参数之前,请判断是否为空 System.String VouchIdRet = broker.GetResult("VouchId") as System.String; ////获取普通OUT参数domMsg。此返回值数据类型为MSXML2.IXMLDOMDocument2,在使用该参数之前,请判断是否为空 //MSXML2.IXMLDOMDocument2 domMsgRet = (broker.GetResult("domMsg")) as MSXML2.IXMLDOMDocument2; //if (domMsgRet != null) // MessageBox.Show(domMsgRet.ToString(), "错误提示2!"); //结束本次调用,释放API资源 broker.Release(); return(VouchIdRet); }
/// <summary> /// 销售订单:装载单据 /// </summary> public void LoadSaleOrder(string vouchID) { try { //第二步:构造环境上下文对象,传入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/Load U8ApiAddress myApiAddress = new U8ApiAddress("U8API/SaleOrder/Load"); //第四步:构造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); //第五步:API参数赋值 //给普通参数VouchID赋值。此参数的数据类型为string,此参数按值传递,表示单据号 broker.AssignNormalValue("VouchID", vouchID); //给普通参数blnAuth赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否控制权限:true broker.AssignNormalValue("blnAuth", true); //第六步:调用API if (!broker.Invoke()) { //错误处理 Exception apiEx = broker.GetException(); if (apiEx != null) { if (apiEx is MomSysException) { MomSysException sysEx = apiEx as MomSysException; Console.WriteLine("系统异常:" + sysEx.Message); //todo:异常处理 } else if (apiEx is MomBizException) { MomBizException bizEx = apiEx as MomBizException; Console.WriteLine("API异常:" + bizEx.Message); //todo:异常处理 } //异常原因 String exReason = broker.GetExceptionString(); if (exReason.Length != 0) { Console.WriteLine("异常原因:" + exReason); } } //结束本次调用,释放API资源 broker.Release(); //return null; } //第七步:获取返回结果 //获取返回值 //获取普通返回值。此返回值数据类型为System.String,此参数按值传递,表示成功为空串 System.String result = broker.GetReturnValue() as System.String; //throw new Exception(result); if (!string.IsNullOrEmpty(result)) { throw new Exception(result); } //获取out/inout参数值 //out参数domHead为BO对象(表头),此BO对象的业务类型为销售订单。BO参数均按引用传递,具体请参考服务接口定义 //如果要取原始的XMLDOM对象结果,请使用GetResult("domHead") as MSXML2.DOMDocument BusinessObject domHeadRet = broker.GetBoParam("domHead"); Console.WriteLine("BO对象(表头)行数为:" + domHeadRet.RowCount); //获取BO对象(表头)的行数 //获取BO对象(表头)各字段的值。字段定义详见API服务接口定义 //MSXML2.DOMDocument domHead = broker.GetResult("domHead") as MSXML2.DOMDocument; //out参数domBody为BO对象(表体),此BO对象的业务类型为销售订单。BO参数均按引用传递,具体请参考服务接口定义 //如果要取原始的XMLDOM对象结果,请使用GetResult("domBody") as MSXML2.DOMDocument BusinessObject domBodyRet = broker.GetBoParam("domBody"); Console.WriteLine("BO对象(表体)行数为:" + domBodyRet.RowCount); //获取BO对象(表体)的行数 //获取BO对象(表体)各字段的值。以下代码示例只取第一行。字段定义详见API服务接口定义 //MSXML2.DOMDocument domBody = broker.GetResult("domBody") as MSXML2.DOMDocument; //结束本次调用,释放API资源 broker.Release(); /* * SO_SOMain so_somain = EntityConvert.ToSO_SOMain(domHeadRet[0]); * SO_SODetails so_sodetail; * for (int i = 0; i < domBodyRet.RowCount; i++) * { * so_sodetail = EntityConvert.ToSO_SODetails(domBodyRet[i]); * so_sodetail.cSOCode = so_somain.cSOCode; * so_somain.List.Add(so_sodetail); * } * return so_somain; */ } catch (Exception ex) { throw new Exception(ex.Message); } }
public string InvokeU8Api(string method,string content) { string retstr = ""; try { string AccCode = ReadXmlData("Detail", "AccCode"); string User = ReadXmlData("Detail", "User"); string Password = ReadXmlData("Detail", "Password"); string Server = ReadXmlData("Detail", "Server"); ulogin = new U8Login.clsLogin(); U8Login.clsLogin u8Login = new U8Login.clsLogin(); // string taskid = clslogin.GetTaskID("DP"); String sSubId = "DP";//AS DP String sAccId = AccCode; String sYear = DateTime.Now.Year.ToString(); String sUserID = User; String sPassword = Password; String sDate = DateTime.Now.ToShortDateString(); String sServer = Server;//USER-20150630LA String sSerial = ""; if (u8Login.Login(ref sSubId, ref sAccId, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial)) { setConnStr(u8Login.UfDbName); //retstr = "login ok!"; } else { retstr = u8Login.ShareString; Marshal.FinalReleaseComObject(u8Login); return retstr; } string ServiceURL = ReadXmlData("Detail", "ServiceURL"); string ServiceName = ReadXmlData("Detail", "ServiceName"); if (method.Equals("InventoryQTY"))//对方来调 { DataTable dt = getSqlData("select cinvcode,cwhcode,iquantity,fAvaQuantity from currentstock where cinvcode='" + content + "'"); if (dt != null && dt.Rows.Count > 0) { StringBuilder sb = new StringBuilder(); sb.Append("<?xml version='1.0' encoding='UTF-8'?> <DATA> "); for (int i = 0; i < dt.Rows.Count; i++) { sb.Append("<RECORD>"); sb.Append("<CINVCODE>"); sb.Append(dt.Rows[i][0].ToString()); sb.Append("</CINVCODE>"); sb.Append("<CWHCODE>"); sb.Append(dt.Rows[i][1].ToString()); sb.Append("</CWHCODE>"); sb.Append("<IQUANTITY>"); sb.Append(dt.Rows[i][2].ToString()); sb.Append("</IQUANTITY>"); sb.Append("<FAVAQUANTITY>"); sb.Append(dt.Rows[i][3].ToString()); sb.Append("</FAVAQUANTITY>"); sb.Append("</RECORD>"); } sb.Append("</DATA>"); return sb.ToString(); } else return "查不到现存量信息"; } if (method.Equals("Inventory"))//U8触发器调用,再调用对方ws { DataTable dt = getSqlData("select cinvcode,cinvname,cinvstd,ccomunitcode,cinvccode,cbarcode,'0' as cisgift,'0' as gd_is_gift,iinvsalecost from inventory with(nolock) where cinvcode='" + content + "'"); DataRow dr = dt.Rows[0]; StringBuilder sb = new StringBuilder(); sb.Append("<DATA><RECORD>"); ConcatXml(sb, dr, "CINVCODE", "cinvcode"); ConcatXml(sb, dr, "CINVNAME", "cinvname"); ConcatXml(sb, dr, "CINVSTD", "cinvstd"); ConcatXml(sb, dr, "CINVCCODE", "cinvccode"); ConcatXml(sb, dr, "CCOMUNITCODE", "ccomunitcode"); ConcatXml(sb, dr, "CBARCODE", "cbarcode"); ConcatXml(sb, dr, "CISGIFT", "cisgift"); ConcatXml(sb, dr, "iInvSaleCost", "iInvSaleCost"); ConcatXml(sb, dr, "gd_is_gift", "gd_is_gift"); sb.Append("</RECORD>"); sb.Append("</DATA>"); ZSNS.ZhengShanWsIClient client = new ZSNS.ZhengShanWsIClient(ServiceName,ServiceURL); return client.inventory(sb.ToString()); //return sb.ToString(); //return "SUCC"; } if (method.Equals("InventoryClass"))//暂时 不使用 { DataTable dt = getSqlData("select CINVCCODE,CINVCNAME,(select cInvCCode from InventoryClass b with(nolock) where b.iInvCGrade+1=h.iInvCGrade and LEFT(h.cinvccode,LEN(b.cinvccode))=b.cinvccode) as CINVCCODE_F from inventoryclass h with(nolock)"); string str = ""; str += "<DATA>"; for (int i = 0; i < dt.Rows.Count; i++) { str += "<RECORD>"; str += GetXmlTag("CINVCCODE", dt.Rows[i]["CINVCCODE"].ToString()); str += GetXmlTag("CINVCNAME", dt.Rows[i]["CINVCCODE"].ToString()); str += GetXmlTag("CINVCCODE_F", dt.Rows[i]["CINVCCODE_F"].ToString()); str += "</RECORD>"; } str += "</DATA>"; ZSNS.ZhengShanWsIClient client = new ZSNS.ZhengShanWsIClient(ServiceName, ServiceURL); return client.InventoryClass(str); } if (method.Equals("ST_AppTransVouchAdd"))//本地U8调拨申请单审核时触发 { StringBuilder sql = new StringBuilder(); sql.AppendLine("select h.cTVCode as vouchid,h.dtvdate as vouchdate,ow.cwhname as owhname,"); sql.AppendLine("iw.cwhname as iwhname,p.cPersonname as Person,"); sql.AppendLine("b.cinvcode,i.cinvname,b.fSaleCost as unitprice,b.itvquantity as qty,b.cbmemo as memo "); sql.AppendLine("from ST_AppTransVouch h with(nolock) inner join ST_AppTransVouchs b with(nolock) on h.ID = b.ID"); sql.AppendLine("inner join Inventory i with(nolock) on i.cInvCode = b.cInvcode "); sql.AppendLine("inner join warehouse ow with(nolock) on ow.cwhcode = h.cOWhCode"); sql.AppendLine("inner join warehouse iw with(nolock) on iw.cwhcode = h.cIWhCode"); sql.AppendLine("left join person p with(nolock) on p.cPersoncode = h.cPersonCode "); sql.AppendLine("where h.cTVCode='"+content+"'"); DataTable dt = getSqlData(sql.ToString()); if (dt.Rows.Count == 0) return "无此调拨申请单号"+content; DataRow dr = dt.Rows[0]; StringBuilder sb = new StringBuilder(); sb.Append("<RECORD>"); sb.Append("<ORDER>"); sb.Append("<ORDERID>"); sb.Append("<HEADER>"); ConcatXml(sb, dr, "VOUCHID", "vouchid"); ConcatXml(sb, dr, "VOUCHDATE", "vouchdate"); ConcatXml(sb, dr, "OWHNAME", "owhname"); ConcatXml(sb, dr, "IWHNAME", "iwhname"); ConcatXml(sb, dr, "PERSON", "person"); sb.Append("</HEADER>"); for (int i = 0; i < dt.Rows.Count; i++) { sb.Append("<DETAIL>"); ConcatXml(sb, dt.Rows[i], "CINVCODE", "cinvcode"); ConcatXml(sb, dt.Rows[i], "CINVNAME", "cinvname"); ConcatXml(sb, dt.Rows[i], "UNITPRICE", "unitprice"); ConcatXml(sb, dt.Rows[i], "QTY", "qty"); ConcatXml(sb, dt.Rows[i], "MEMO", "memo"); sb.Append("</DETAIL>"); } sb.Append("</ORDERID>"); sb.Append("</ORDER>"); sb.Append("</RECORD>"); sb.Append("</DATA>"); ZSNS.ZhengShanWsIClient c = new ZSNS.ZhengShanWsIClient(ServiceName, ServiceURL); return c.ST_AppTransVouchAdd(sb.ToString()); } string api = ""; if (method.Equals("TransVouchAdd"))//调拨单生成 { api = "U8API/TransVouch/Add"; } else if (method.Equals("audit"))//调拨单审核 { api = "U8API/TransVouch/Delete"; } else if (method.Equals("load"))//调拨申请单查询,废弃 { api = "U8API/TransRequestVouch/Load"; }else if (method.Equals("OutboundOrderAdd")) api = "U8API/saleout/Add"; if (method.Equals("OutboundOrderDone")) api = "U8API/saleout/CancelAudit";//Delete U8EnvContext envContext = new U8EnvContext(); envContext.U8Login = u8Login; //string method = "audit"; U8ApiAddress myApiAddress = new U8ApiAddress(api); U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); MSXML2.DOMDocument domMsg = new MSXML2.DOMDocument(); if (method.Equals("TransVouchAdd"))//基本完成 { broker.AssignNormalValue("sVouchType", "12"); BusinessObject DomHead = broker.GetBoParam("DomHead"); DomHead.RowCount = 1; XmlDocument xml = new XmlDocument(); //xml.LoadXml(content.Trim()); xml.Load("c:\\DATA.xml"); XmlNodeList xnList = xml.SelectNodes("/DATA/ORDER/ORDERID/DETAIL"); foreach (XmlNode xn in xnList) { retstr += "开始读取XML"; string VOUCHID = xn["VOUCHID"].InnerText; string VOUCHDATE = xn["VOUCHDATE"].InnerText; //DomHead[0]["id"] = "2"; //主关键字段,int类型 DomHead[0]["ctvcode"] = VOUCHID; //单据号,string类型 DomHead[0]["dtvdate"] = VOUCHDATE; //日期,DateTime类型 DataTable dt = getSqlData("select cwhcode from warehouse where cwhname='" + xn["OWHNAME"].InnerText+"'"); if (dt.Rows.Count > 0) DomHead[0]["cowhcode"] = dt.Rows[0][0].ToString(); dt = getSqlData("select cwhcode from warehouse where cwhname='" + xn["IWHNAME"].InnerText + "'"); if (dt.Rows.Count > 0) DomHead[0]["ciwhcode"] = dt.Rows[0][0].ToString(); DomHead[0]["cwhname"] = xn["OWHNAME"].InnerText; //转出仓库,string类型 DomHead[0]["cwhname_1"] = xn["IWHNAME"].InnerText; //转入仓库,string类型 //DomHead[0]["ciwhcode"] = "2";//转入仓库编码,string类型 //DomHead[0]["cowhcode"] = "1"; //转出仓库编码,string类型 //DomHead[0]["cordcode"] = "2"; //出库类别编码,string类型 //DomHead[0]["cirdcode"] = "1"; //入库类别编码,string类型 //DomHead[0]["crdname_1"] = "销售出库";//出库类别 //DomHead[0]["crdname"] = "采购入库";//入库类别 //DomHead[0]["cdepname_1"] = "采购部"; //DomHead[0]["cdepname"] = "销售部"; //DomHead[0]["codepcode"] = "1"; //DomHead[0]["cidepcode"] = "2"; //DomHead[0]["cpersoncode"] = "1"; DomHead[0]["cpersonname"] = xn["PERSON"].InnerText;//经手人 dt = getSqlData("select cPersonCode from Person where cPersonName='" + xn["PERSON"].InnerText + "'"); if (dt.Rows.Count > 0) DomHead[0]["cpersoncode"] = dt.Rows[0][0].ToString(); //DomHead[0]["iamount"] = "";//现存量 DomHead[0]["dnmaketime"] = DateTime.Now; DomHead[0]["ctvmemo"] = xn["MEMO"].InnerText; DomHead[0]["cinvname"] = xn["CINVNAME"].InnerText; //DomHead[0]["iavaquantity"] = "80"; 可用量 DomHead[0]["csource"] = "1"; //1 -- 库存 2 -- 零售 3 -- 预留 DomHead[0]["cmaker"] = User; DomHead[0]["csource"] = "1"; DomHead[0]["itransflag"] = "正向"; DomHead[0]["vt_id"] = 89; DomHead[0]["dnmaketime"] = DateTime.Now.ToLongDateString(); //DomHead[0]["ufts"] = " 275.5169"; DomHead[0]["btransflag"] = false; BusinessObject domBody = broker.GetBoParam("domBody"); domBody.RowCount = 1; //domBody[0]["autoid"] = "2"; //主关键字段,int类型 domBody[0]["cinvcode"] = xn["CINVCODE"].InnerText;//存货编码,string类型 domBody[0]["cinvname"] = xn["CINVNAME"].InnerText; //domBody[0]["cinvstd"] = ""; domBody[0]["itvquantity"] =getDouble(xn["QTY"].InnerText); //数量,double类型 DataTable dt3 = getSqlData("select cComUnitCode from inventory where cinvcode='" + xn["CINVCODE"].InnerText + "'"); //domBody[0]["itvnum"] = 0.1; domBody[0]["ctvbatch"] = ""; if (dt3.Rows.Count > 0) { domBody[0]["cinvm_unit"] = dt3.Rows[0][0].ToString(); //domBody[0]["cinva_unit"] = "4"; //domBody[0]["cassunit"] = "4"; } domBody[0]["iexpiratdatecalcu"] = 0; domBody[0]["issotype"] = 0; domBody[0]["idsotype"] = 0; domBody[0]["isoseq"] = ""; domBody[0]["idsoseq"] = ""; domBody[0]["issodid"] = ""; domBody[0]["idsodid"] = ""; domBody[0]["cinvaddcode"] = ""; domBody[0]["corufts"] = " "; domBody[0]["cdsocode"] = ""; domBody[0]["csocode"] = ""; domBody[0]["bcosting"] = "1"; domBody[0]["cposition"] = ""; //domBody[0]["iinvexchrate"] = 100; domBody[0]["ctvcode"] = VOUCHID; domBody[0]["fsalecost"] = getDouble(xn["UNITPRICE"].InnerText) * getDouble(xn["QTY"].InnerText); domBody[0]["fsaleprice"] = getDouble(xn["UNITPRICE"].InnerText); //domBody[0]["itvpcost"] = getDouble(xn["itvpcost"].InnerText); ; domBody[0]["itvaprice"] = 0; domBody[0]["itvpprice"] = 0; domBody[0]["itvacost"] = 0; //domBody[0]["igrossweight"] = "3"; //domBody[0]["inetweight"] = "1"; domBody[0]["editprop"] = "A"; retstr += "读取XML完成"; } broker.AssignNormalValue("domPosition", null); broker.AssignNormalValue("errMsg", ""); broker.AssignNormalValue("cnnFrom", null); broker.AssignNormalValue("VouchId", ""); broker.AssignNormalValue("domMsg", domMsg); broker.AssignNormalValue("bCheck", false); broker.AssignNormalValue("bBeforCheckStock", false); broker.AssignNormalValue("bIsRedVouch", false); broker.AssignNormalValue("sAddedState", ""); broker.AssignNormalValue("bReMote", false); } if (method.Equals("OutboundOrderAdd")) { broker.AssignNormalValue("sVouchType", "32");//新增0 修改1 broker.AssignNormalValue("vNewID", ""); } if (method.Equals("OutboundOrderDone"))//出库单审核 { DataTable dt = getSqlData("select CONVERT(money,ufts) as ufts from rdrecord32 where cCode='" + content + "'"); double ufts = 0; if (dt.Rows.Count > 0) ufts = double.Parse(dt.Rows[0][0].ToString()); else return "找不到此销售出库单号:" + content; broker.AssignNormalValue("sVouchType", "32"); broker.AssignNormalValue("VouchId", content);//单据号 broker.AssignNormalValue("errMsg", ""); broker.AssignNormalValue("cnnFrom", null); broker.AssignNormalValue("TimeStamp", String.Format("{0,30}", String.Format("{0:0.0000}", ufts)));// " 275.5210" broker.AssignNormalValue("domMsg", domMsg);//new MSXML2.DOMDocument() broker.AssignNormalValue("bCheck", false); broker.AssignNormalValue("bBeforCheckStock", false); broker.AssignNormalValue("bList", false); //删除单据不需要下面三个参数 //broker.AssignNormalValue("MakeWheres", null); //broker.AssignNormalValue("sWebXml", ""); //broker.AssignNormalValue("oGenVouchIds", null); } if (method.Equals("audit"))//调拨单审核,未解决 { DataTable dt = getSqlData("select CONVERT(money,ufts) as ufts from transvouch where cTVCode='" + content + "'"); double ufts = 0; //string ts = ""; if (dt.Rows.Count > 0) { //DataTable dt2 = getSqlData("select convert(timestamp,CONVERT(money," + String.Format("{0,30}", String.Format("{0:0.0000}", ufts)) + ")) as ufts "); ufts = double.Parse(dt.Rows[0][0].ToString()); //ts = dt2.Rows[0][0].ToString(); } else return "找不到此调拨单号:"+content; broker.AssignNormalValue("sVouchType", "12"); broker.AssignNormalValue("VouchId", content);//单据号 broker.AssignNormalValue("errMsg", ""); broker.AssignNormalValue("cnnFrom", null); broker.AssignNormalValue("TimeStamp", String.Format("{0,30}", String.Format("{0:0.0000}", ufts)));// " 275.5210" broker.AssignNormalValue("domMsg", domMsg);//new MSXML2.DOMDocument() broker.AssignNormalValue("bCheck", false); broker.AssignNormalValue("bBeforCheckStock", false); broker.AssignNormalValue("bList", false); //broker.AssignNormalValue("MakeWheres", null); //broker.AssignNormalValue("sWebXml", ""); //broker.AssignNormalValue("oGenVouchIds", null); } if (method.Equals("load"))//deprecated. not in use { broker.AssignNormalValue("sVouchType", "62"); broker.AssignNormalValue("sWhere", " VouchId='0000000001'"); broker.AssignNormalValue("bGetBlank", false); broker.AssignNormalValue("sBodyWhere_Order", "cInvcode"); broker.AssignNormalValue("errMsg", ""); broker.AssignNormalValue("domPos", domMsg); BusinessObject obj = broker.GetBoParam("domHead"); BusinessObject obj1 = broker.GetBoParam("domBody"); } retstr += "开始调用"; if (!broker.Invoke()) { retstr += "调用失败:"; //错误处理 Exception apiEx = broker.GetException(); if (apiEx != null) { if (apiEx is MomSysException) { MomSysException sysEx = apiEx as MomSysException; //Console.WriteLine("系统异常:" + sysEx.Message); retstr = sysEx.Message + "[MomSysException]"; //todo:异常处理 } else if (apiEx is MomBizException) { MomBizException bizEx = apiEx as MomBizException; //Console.WriteLine("API异常:" + bizEx.Message); retstr = bizEx.Message + "[MomBizException]"; //todo:异常处理 } } //结束本次调用,释放API资源 broker.Release(); //return; } else { retstr += "调用成功:"; if (method.Equals("load")) { System.String result = broker.GetReturnValue() as System.String; if (string.IsNullOrEmpty(result)) { retstr += "加载调拨申请单成功!"; //Console.WriteLine("加载销售订单成功!"); //获取out/inout参数值 //MSXML2.XMLDocument xmlResult = broker.GetResult("domHead") as MSXML2.XMLDocument; MSXML2.DOMDocumentClass xmlHead = broker.GetResult("DomHead") as MSXML2.DOMDocumentClass; xmlHead.save("TransRequestVouchHead.xml"); //out参数domBody为BO对象(表体),此BO对象的业务类型为销售订单。BO参数均按引用传递,具体请参考服务接口定义 //如果要取原始的XMLDOM对象结果,请使用GetResult() MSXML2.DOMDocumentClass xmlBody = broker.GetResult("domBody") as MSXML2.DOMDocumentClass; xmlBody.save("TransRequestVouchBody.xml"); } else { retstr += "加载调拨申请单失败!"; //Console.WriteLine("加载销售订单失败!"); } } else { DOMDocument doc = (DOMDocument)broker.GetResult("domMsg"); if (doc != null) retstr += doc.text + "|"; retstr += broker.GetResult("errMsg") + "|" + broker.GetResult("retval").ToString(); } } } catch (Exception e) { retstr += "异常:" + e.Message+"\n"+e.StackTrace; return retstr; //throw; } return retstr; }