Exemple #1
0
        public void OptimizedDeleteQuery()
        {
            using (var container = new RhetosTestContainer())
            {
                var sqlExecuter = container.Resolve <ISqlExecuter>();
                var repository  = container.Resolve <Common.DomRepository>();

                repository.TestEntity.UniqueEntity.Delete(repository.TestEntity.UniqueEntity.Load());
                var newItem = new TestEntity.UniqueEntity {
                    ID = Guid.NewGuid(), Name = "a", Data = "b"
                };
                repository.TestEntity.UniqueEntity.Insert(newItem);

                // Temporarily removing a column to detect if the following code will try to read it.
                sqlExecuter.ExecuteSql("ALTER TABLE TestEntity.UniqueEntity DROP COLUMN Data");

                IEnumerable <TestEntity.UniqueEntity> items = repository.TestEntity.UniqueEntity.Query();
                // The following line should not try to read all columns.
                DomHelper.MaterializeItemsToDelete(ref items);
                Assert.AreEqual(1, items.Count());
                Assert.AreEqual(newItem.ID, items.Single().ID);
                Assert.IsNull(items.Single().Name);
                Assert.IsNull(items.Single().Data);
            }
        }
Exemple #2
0
        public IDictionary <string, CacheServerConfig> PopulateCachingProfile()
        {
            IDictionary <string, CacheServerConfig> _cacheMetaInfo = new Dictionary <string, CacheServerConfig>();

            foreach (DictionaryEntry cache in CacheServer.Caches)
            {
                String cacheName = cache.Key.ToString().ToLower();
                if (_cacheMetaInfo != null)
                {
                    if (_cacheMetaInfo.ContainsKey(cache.Key.ToString()))
                    {
                        _cacheMetaInfo[cache.Key.ToString()] = DomHelper.convertToNewDom(CacheServer.GetCacheInfo(cacheName).CacheProps);
                    }
                    else
                    {
                        _cacheMetaInfo.Add(cache.Key.ToString(), DomHelper.convertToNewDom(CacheServer.GetCacheInfo(cacheName).CacheProps));
                    }
                }
            }

            return(_cacheMetaInfo);
        }
        public bool AddPO(PurchaseOrder purchase, ref string errMsg)
        {
            #region 采购订单

            IXMLDOMDocument2      domHead = new MSXML2.DOMDocument();
            IXMLDOMDocument2      domBody = new MSXML2.DOMDocument();
            MSXML2.IXMLDOMElement eleHead;
            MSXML2.IXMLDOMElement eleBody;
            MSXML2.IXMLDOMElement ele;
            string strSQL;
            strSQL  = "select * from zpurpoheader where 1=0";
            domHead = DomHelper.getDom(strSQL, g_oLogin.UfDbName);

            //增加表头数据节点z:row
            eleHead = domHead.selectSingleNode("//rs:data") as MSXML2.IXMLDOMElement;
            ele     = domHead.createElement("z:row");
            //'UPGRADE_WARNING: 未能解析对象 ele 的默认属性。 单击以获得更多信息:“ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"”
            eleHead.appendChild(ele);

            //方法二是构造BusinessObject对象,具体方法如下:
            //BusinessObject domHead = broker.GetBoParam("domHead");
            //domHead.RowCount = 1; //设置BO对象(表头)行数,只能为一行
            //给BO对象(表头)的字段赋值,值可以是真实类型,也可以是无类型字符串
            //以下代码示例只设置第一行值。各字段定义详见API服务接口定义

            /****************************** 以下是必输字段 ****************************/
            DomHelper.setAttribute(ele, "poid", "0");                                        //主关键字段,int类型
            DomHelper.setAttribute(ele, "cbustype", "普通采购");                                 //业务类型,int类型
            DomHelper.setAttribute(ele, "dpodate", g_oLogin.CurDate.ToString("yyyy-MM-dd")); //日期,DateTime类型
            DomHelper.setAttribute(ele, "cpoid", "0000000041");                              //订单编号,string类型
            DomHelper.setAttribute(ele, "cvenabbname", "辰环手机配件");                            //供货单位,string类型
            DomHelper.setAttribute(ele, "cexch_name", "人民币");                                //币种,string类型
            DomHelper.setAttribute(ele, "nflat", "1");                                       //汇率,double类型
            DomHelper.setAttribute(ele, "cmaker", "demo");                                   //制单人,string类型
            DomHelper.setAttribute(ele, "cvencode", "01002");                                //供货单位编号,string类型
            //DomHead[0]["ufts"] = ""; //时间戳,string类型
            DomHelper.setAttribute(ele, "idiscounttaxtype", "0");                            //扣税类别,int类型
            //DomHead[0]["contractcodet"] = ""; //合同号,string类型
            //DomHead[0]["iflowid"] = ""; //流程ID,string类型
            //DomHead[0]["cflowname"] = ""; //流程模式描述,string类型
            //DomHead[0]["dclosetime"] = ""; //关闭时间,string类型
            //DomHead[0]["dclosedate"] = ""; //关闭日期,string类型
            //DomHead[0]["ccontactcode"] = ""; //供方联系人编码,string类型
            //DomHead[0]["cmobilephone"] = ""; //供方联系人手机号,string类型
            //DomHead[0]["cappcode"] = ""; //请购单号,string类型
            //DomHead[0]["csysbarcode"] = ""; //单据条码,string类型
            //DomHead[0]["cchangverifier"] = ""; //变更审批人,string类型
            //DomHead[0]["cchangaudittime"] = ""; //变更审批时间,string类型
            //DomHead[0]["cchangauditdate"] = ""; //变更审批日期,string类型
            //DomHead[0]["controlresult"] = ""; //controlresult,string类型
            //DomHead[0]["ibg_overflag"] = ""; //预算审批状态,string类型
            //DomHead[0]["cbg_auditor"] = ""; //预算审批人,string类型
            //DomHead[0]["cbg_audittime"] = ""; //预算审批时间,string类型

            /***************************** 以下是非必输字段 ****************************/
            //DomHead[0]["ipresent"] = ""; //现存量,string类型
            //DomHead[0]["cmaketime"] = ""; //制单时间,DateTime类型
            //DomHead[0]["cmodifytime"] = ""; //修改时间,DateTime类型
            //DomHead[0]["caudittime"] = ""; //审核时间,DateTime类型
            //DomHead[0]["cauditdate"] = ""; //审核日期,DateTime类型
            //DomHead[0]["cmodifydate"] = ""; //修改日期,DateTime类型
            //DomHead[0]["creviser"] = ""; //修改人,string类型
            //DomHead[0]["cptname"] = ""; //采购类型,string类型
            //DomHead[0]["cvenname"] = ""; //供应商全称,string类型
            //DomHead[0]["iverifystateex"] = ""; //审核状态,string类型
            //DomHead[0]["ireturncount"] = ""; //打回次数,string类型
            //DomHead[0]["iswfcontrolled"] = "0"; //是否启用工作流,string类型
            //DomHead[0]["cdepname"] = ""; //部门,string类型
            //DomHead[0]["cpersonname"] = ""; //业务员,string类型
            DomHelper.setAttribute(ele, "itaxrate", "17");     //税率,double类型
            //DomHead[0]["cpayname"] = ""; //付款条件,string类型
            DomHelper.setAttribute(ele, "cmemo", "底层API测试");   //备注,string类型
            //DomHead[0]["dplanarrdate"] = ""; //计划到货日期,DateTime类型
            //DomHead[0]["cverifier"] = ""; //审核人,string类型
            //DomHead[0]["cchanger"] = ""; //变更人,string类型
            //DomHead[0]["ccloser"] = ""; //关闭人,string类型
            DomHelper.setAttribute(ele, "ivtid", "8173");     //单据模版号,int类型
            //DomHead[0]["cvenbank"] = ""; //供方银行名称,string类型
            //DomHead[0]["cptcode"] = ""; //采购类型编号,string类型
            //DomHead[0]["myname"] = ""; //地址,double类型
            //DomHead[0]["myphone"] = ""; //电话,double类型
            //DomHead[0]["myfax"] = ""; //传真,double类型
            //DomHead[0]["myzip"] = ""; //邮编,double类型
            //DomHead[0]["cvenaddress"] = ""; //供方地址,string类型
            //DomHead[0]["cvenphone"] = ""; //供方电话,string类型
            //DomHead[0]["cvenfax"] = ""; //供方传真,string类型
            //DomHead[0]["cvenpostcode"] = ""; //供方邮编,string类型
            //DomHead[0]["cvenperson"] = ""; //供方联系人,string类型
            //DomHead[0]["cvenaccount"] = ""; //供方银行账号,string类型
            //DomHead[0]["cvenregcode"] = ""; //供方纳税登记号,string类型
            //DomHead[0]["cstate"] = "1"; //状态(数据库),string类型
            //DomHead[0]["cperiod"] = ""; //计划周期,string类型
            //DomHead[0]["carrivalplace"] = ""; //到货地址,string类型
            //DomHead[0]["ibargain"] = ""; //订金,double类型
            //DomHead[0]["csccode"] = ""; //运输方式编号,string类型
            //DomHead[0]["icost"] = ""; //运费,double类型
            //DomHead[0]["cscname"] = ""; //运输方式,string类型
            //DomHead[0]["cpaycode"] = ""; //付款条件编号,string类型
            DomHelper.setAttribute(ele, "cpersoncode", "00043"); //业务员编号,string类型
            DomHelper.setAttribute(ele, "cdepcode", "0401");     //部门编号,string类型
            //DomHead[0]["cdefine1"] = ""; //表头自定义项1,string类型
            //DomHead[0]["cdefine2"] = ""; //表头自定义项2,string类型
            //DomHead[0]["cdefine3"] = ""; //表头自定义项3,string类型
            //DomHead[0]["cdefine4"] = ""; //表头自定义项4,DateTime类型
            //DomHead[0]["cdefine5"] = ""; //表头自定义项5,int类型
            //DomHead[0]["cdefine6"] = ""; //表头自定义项6,DateTime类型
            //DomHead[0]["cdefine7"] = ""; //表头自定义项7,double类型
            //DomHead[0]["cdefine8"] = ""; //表头自定义项8,string类型
            //DomHead[0]["cdefine9"] = ""; //表头自定义项9,string类型
            //DomHead[0]["cdefine10"] = ""; //表头自定义项10,string类型
            //DomHead[0]["cdefine11"] = ""; //表头自定义项11,string类型
            //DomHead[0]["cdefine12"] = ""; //表头自定义项12,string类型
            //DomHead[0]["cdefine13"] = ""; //表头自定义项13,string类型
            //DomHead[0]["cdefine14"] = ""; //表头自定义项14,string类型
            //DomHead[0]["cdefine15"] = ""; //表头自定义项15,int类型
            //DomHead[0]["cdefine16"] = ""; //表头自定义项16,double类型
            //DomHead[0]["cvendefine1"] = ""; //供应商自定义项1,string类型
            //DomHead[0]["cvendefine2"] = ""; //供应商自定义项2,string类型
            //DomHead[0]["cvendefine3"] = ""; //供应商自定义项3,string类型
            //DomHead[0]["cvendefine4"] = ""; //供应商自定义项4,string类型
            //DomHead[0]["cvendefine5"] = ""; //供应商自定义项5,string类型
            //DomHead[0]["cvendefine6"] = ""; //供应商自定义项6,string类型
            //DomHead[0]["cvendefine7"] = ""; //供应商自定义项7,string类型
            //DomHead[0]["cvendefine8"] = ""; //供应商自定义项8,string类型
            //DomHead[0]["cvendefine9"] = ""; //供应商自定义项9,string类型
            //DomHead[0]["cvendefine10"] = ""; //供应商自定义项10,string类型
            //DomHead[0]["cvenpuomprotocol"] = ""; //收付款协议编码,string类型
            //DomHead[0]["cvendefine11"] = ""; //供应商自定义项11,string类型
            //DomHead[0]["cvenpuomprotocolname"] = ""; //收付款协议名称,string类型
            //DomHead[0]["cvendefine12"] = ""; //供应商自定义项12,string类型
            //DomHead[0]["cvendefine13"] = ""; //供应商自定义项13,string类型
            //DomHead[0]["cvendefine14"] = ""; //供应商自定义项14,string类型
            //DomHead[0]["cvendefine15"] = ""; //供应商自定义项15,string类型
            //DomHead[0]["cvendefine16"] = ""; //供应商自定义项16,string类型
            //DomHead[0]["clocker"] = ""; //锁定人,string类型

            //broker.AssignNormalValue("domHead", domHead);

            //给BO表体参数domBody赋值,此BO参数的业务类型为销售订单,属表体参数。BO参数均按引用传递
            //提示:给BO表体参数domBody赋值有两种方法

            //方法一是直接传入MSXML2.DOMDocumentClass对象
            //broker.AssignNormalValue("domBody", new MSXML2.DOMDocumentClass())
            strSQL  = "select * from zpurpotail where 1=0";
            domBody = DomHelper.getDom(strSQL, g_oLogin.UfDbName);

            //增加表体数据节点z:row
            eleBody = domBody.selectSingleNode("//rs:data") as MSXML2.IXMLDOMElement;
            //方法二是构造BusinessObject对象,具体方法如下:
            //BusinessObject domBody = broker.GetBoParam("domBody");
            //domBody.RowCount = 1; //设置BO对象行数
            //可以自由设置BO对象行数为大于零的整数,也可以不设置而自动增加行数
            //给BO对象的字段赋值,值可以是真实类型,也可以是无类型字符串
            //以下代码示例只设置第一行值。各字段定义详见API服务接口定义

            /****************************** 以下是必输字段 ****************************/
            for (int i = 0; i < 2; i++)
            {
                decimal decQuantity = 20.00M;
                //含税单价
                decimal decprice = 10.00M;
                //含税金额
                decimal decamount = decimal.Round(decQuantity * decprice, 2);
                //税率
                decimal decTaxRate = 0.00M;
                //不含税金额
                decimal decNotTaxAmount = decimal.Round(decamount / (1 + decTaxRate), 2);
                if (decTaxRate == 0)
                {
                    decNotTaxAmount = decamount;
                }
                //不含税单价
                decimal decNotTaxPrice = decimal.Round(decNotTaxAmount / decQuantity, 2);
                if (decTaxRate == 0)
                {
                    decNotTaxPrice = decprice;
                }
                //税额
                decimal decTax = decamount - decNotTaxAmount;

                ele = domBody.createElement("z:row");
                eleBody.appendChild(ele);

                DomHelper.setAttribute(ele, "id", "0");     //主关键字段,int类型
                DomHelper.setAttribute(ele, "cfactorycode", "001");
                DomHelper.setAttribute(ele, "cfactoryname", "工厂一");
                DomHelper.setAttribute(ele, "cinvcode", "17001");                                    //存货编码,string类型
                DomHelper.setAttribute(ele, "iquantity", "1");                                       //数量,double类型
                DomHelper.setAttribute(ele, "darrivedate", g_oLogin.CurDate.ToString("yyyy-MM-dd")); //计划到货日期,DateTime类型
                DomHelper.setAttribute(ele, "ipertaxrate", "17");                                    //税率,double类型
                DomHelper.setAttribute(ele, "poid", "0");                                            //主表id,int类型
                DomHelper.setAttribute(ele, "bgsp", "0");                                            //是否检验,int类型
                DomHelper.setAttribute(ele, "editprop", "A");                                        //编辑属性:A表新增,M表修改,D表删除,string类型
                //domBody[0]["cbg_itemcode"] = ""; //预算项目编码,string类型
                //domBody[0]["cbg_itemname"] = ""; //预算项目,string类型
                //domBody[0]["cbg_caliberkey1"] = ""; //口径1类型编码,string类型
                //domBody[0]["cbg_caliberkeyname1"] = ""; //口径1类型名称,string类型
                //domBody[0]["cbg_caliberkey2"] = ""; //口径2类型编码,string类型
                //domBody[0]["cbg_caliberkeyname2"] = ""; //口径2类型名称,string类型
                //domBody[0]["cbg_caliberkey3"] = ""; //口径3类型编码,string类型
                //domBody[0]["cbg_caliberkeyname3"] = ""; //口径3类型名称,string类型
                //domBody[0]["cbg_calibercode1"] = ""; //口径1编码,string类型
                //domBody[0]["cbg_calibername1"] = ""; //口径1名称,string类型
                //domBody[0]["cbg_calibercode2"] = ""; //口径2编码,string类型
                //domBody[0]["cbg_calibername2"] = ""; //口径2名称,string类型
                //domBody[0]["cbg_calibercode3"] = ""; //口径3编码,string类型
                //domBody[0]["cbg_calibername3"] = ""; //口径3名称,string类型
                //domBody[0]["cbg_auditopinion"] = ""; //审批意见,string类型
                //domBody[0]["ibg_ctrl"] = ""; //是否预算控制,string类型
                //domBody[0]["fexquantity"] = ""; //累计出口数量,string类型
                DomHelper.setAttribute(ele, "ivouchrowno", i);     //行号,string类型
                //domBody[0]["cbg_caliberkeyname4"] = ""; //口径4类型名称,string类型
                //domBody[0]["cbg_caliberkey5"] = ""; //口径5类型编码,string类型
                //domBody[0]["cbg_caliberkeyname5"] = ""; //口径5类型名称,string类型
                //domBody[0]["cbg_caliberkey6"] = ""; //口径6类型编码,string类型
                //domBody[0]["cbg_caliberkeyname6"] = ""; //口径6类型名称,string类型
                //domBody[0]["cbg_calibercode4"] = ""; //口径4编码,string类型
                //domBody[0]["cbg_calibername4"] = ""; //口径4名称,string类型
                //domBody[0]["cbg_calibercode5"] = ""; //口径5编码,string类型
                //domBody[0]["cbg_calibername5"] = ""; //口径5名称,string类型
                //domBody[0]["cbg_calibercode6"] = ""; //口径6编码,string类型
                //domBody[0]["cbg_calibername6"] = ""; //口径6名称,string类型
                //domBody[0]["csrpolicy"] = ""; //供需政策,string类型
                //domBody[0]["irequiretrackstyle"] = ""; //存货需求跟踪方式,string类型
                //domBody[0]["ipresentb"] = ""; //现存量,string类型
                //domBody[0]["cbg_caliberkey4"] = ""; //口径4类型编码,string类型
                //domBody[0]["cxjspdids"] = ""; //采购比价审批单子表ID,string类型
                DomHelper.setAttribute(ele, "cbmemo", "cqz" + i.ToString());     //备注,string类型
                //domBody[0]["cbsysbarcode"] = ""; //单据行条码,string类型
                //domBody[0]["planlotnumber"] = ""; //计划批号,string类型
                //domBody[0]["cplanmethod"] = ""; //计划方法,string类型

                /***************************** 以下是非必输字段 ****************************/
                //domBody[0]["iinvexchrate"] = ""; //换算率,double类型
                //domBody[0]["cinvname"] = ""; //存货名称,string类型
                //domBody[0]["cinvstd"] = ""; //规格型号,string类型
                //domBody[0]["iquotedprice"] = ""; //报价,double类型
                //domBody[0]["inum"] = ""; //件数,double类型
                //domBody[0]["iunitprice"] = ""; //原币单价,double类型
                //domBody[0]["imoney"] = ""; //原币金额,double类型
                //domBody[0]["itax"] = ""; //原币税额,double类型
                //domBody[0]["idiscount"] = ""; //折扣额,double类型
                //domBody[0]["inatunitprice"] = ""; //本币单价,double类型
                //domBody[0]["inatmoney"] = ""; //本币金额,double类型
                //domBody[0]["inattax"] = ""; //本币税额,double类型
                //domBody[0]["inatsum"] = ""; //本币价税合计,double类型
                //domBody[0]["inatdiscount"] = ""; //本币折扣额,double类型
                //domBody[0]["isum"] = ""; //原币价税合计,double类型
                //domBody[0]["cfree2"] = ""; //自由项2,string类型
                //domBody[0]["cfree1"] = ""; //自由项1,string类型
                //domBody[0]["bmark"] = ""; //标志,double类型
                //domBody[0]["cdefine22"] = ""; //表体自定义项1,string类型
                //domBody[0]["cdefine23"] = ""; //表体自定义项2,string类型
                //domBody[0]["cdefine24"] = ""; //表体自定义项3,string类型
                //domBody[0]["cdefine25"] = ""; //表体自定义项4,string类型
                //domBody[0]["cdefine26"] = ""; //表体自定义项5,double类型
                //domBody[0]["cdefine27"] = ""; //表体自定义项6,double类型
                //domBody[0]["cinvdefine1"] = ""; //存货自定义项1,string类型
                //domBody[0]["cinvdefine4"] = ""; //存货自定义项4,string类型
                //domBody[0]["cinvdefine5"] = ""; //存货自定义项5,string类型
                //domBody[0]["cinvdefine6"] = ""; //存货自定义项6,string类型
                //domBody[0]["cinvdefine7"] = ""; //存货自定义项7,string类型
                //domBody[0]["cinvdefine8"] = ""; //存货自定义项8,string类型
                //domBody[0]["cinvdefine9"] = ""; //存货自定义项9,string类型
                //domBody[0]["cinvdefine10"] = ""; //存货自定义项10,string类型
                //domBody[0]["cinvdefine11"] = ""; //存货自定义项11,string类型
                //domBody[0]["cinvdefine12"] = ""; //存货自定义项12,string类型
                //domBody[0]["cinvdefine13"] = ""; //存货自定义项13,string类型
                //domBody[0]["cinvdefine14"] = ""; //存货自定义项14,string类型
                //domBody[0]["cinvdefine15"] = ""; //存货自定义项15,string类型
                //domBody[0]["cinvdefine16"] = ""; //存货自定义项16,string类型
                //domBody[0]["cinvdefine2"] = ""; //存货自定义项2,string类型
                //domBody[0]["cinvdefine3"] = ""; //存货自定义项3,string类型
                //domBody[0]["citemcode"] = ""; //项目编码,string类型
                //domBody[0]["citem_class"] = ""; //项目大类编码,string类型
                //domBody[0]["ppcids"] = ""; //采购计划子表ID,string类型
                //domBody[0]["citemname"] = ""; //项目名称,string类型
                //domBody[0]["citem_name"] = ""; //项目大类名称,string类型
                //domBody[0]["cfree3"] = ""; //自由项3,string类型
                //domBody[0]["cfree4"] = ""; //自由项4,string类型
                //domBody[0]["cfree5"] = ""; //自由项5,string类型
                //domBody[0]["cfree6"] = ""; //自由项6,string类型
                //domBody[0]["cfree7"] = ""; //自由项7,string类型
                //domBody[0]["cfree8"] = ""; //自由项8,string类型
                //domBody[0]["cfree9"] = ""; //自由项9,string类型
                //domBody[0]["cfree10"] = ""; //自由项10,string类型
                //domBody[0]["imainid"] = ""; //对应单据主表id,string类型
                //domBody[0]["btaxcost"] = ""; //单价标准,string类型
                //domBody[0]["corufts"] = ""; //对应单据时间戳,string类型
                //domBody[0]["itaxprice"] = ""; //含税单价,double类型
                //domBody[0]["cunitid"] = ""; //单位编码,string类型
                //domBody[0]["cinva_unit"] = ""; //采购单位,string类型
                //domBody[0]["cinvm_unit"] = ""; //主计量,string类型
                //domBody[0]["igrouptype"] = ""; //分组类型,string类型
                //domBody[0]["iappids"] = ""; //请购单子表id,int类型
                //domBody[0]["isosid"] = ""; //订单子表id,int类型
                //domBody[0]["cdefine28"] = ""; //表体自定义项7,string类型
                //domBody[0]["cdefine29"] = ""; //表体自定义项8,string类型
                //domBody[0]["cdefine30"] = ""; //表体自定义项9,string类型
                //domBody[0]["cdefine31"] = ""; //表体自定义项10,string类型
                //domBody[0]["cdefine32"] = ""; //表体自定义项11,string类型
                //domBody[0]["cdefine33"] = ""; //表体自定义项12,string类型
                //domBody[0]["cdefine34"] = ""; //表体自定义项13,int类型
                //domBody[0]["cdefine35"] = ""; //表体自定义项14,int类型
                //domBody[0]["cdefine36"] = ""; //表体自定义项15,DateTime类型
                //domBody[0]["cdefine37"] = ""; //表体自定义项16,DateTime类型
                //domBody[0]["csource"] = ""; //单据来源,string类型
                //domBody[0]["cinvaddcode"] = ""; //存货代码,string类型
                //domBody[0]["cbcloser"] = ""; //行关闭人,string类型
                //domBody[0]["cveninvcode"] = ""; //供应商存货编码,string类型
                //domBody[0]["cveninvname"] = ""; //供应商存货名称,string类型
                //domBody[0]["ippartid"] = ""; //母件Id,int类型
                //domBody[0]["ipquantity"] = ""; //母件数量,int类型
                //domBody[0]["iptoseq"] = ""; //选配序号,int类型
                //domBody[0]["contractrowno"] = ""; //合同标的编码,string类型
                //domBody[0]["contractrowguid"] = ""; //合同标的GUID,string类型
                //domBody[0]["contractcode"] = ""; //合同号,string类型
                //domBody[0]["sotype"] = ""; //需求跟踪方式,int类型
                //domBody[0]["csocode"] = ""; //需求跟踪号,string类型
                //domBody[0]["irowno"] = ""; //需求跟踪行号,string类型
                //domBody[0]["sodid"] = ""; //需求跟踪子表ID,string类型
                //domBody[0]["cbclosetime"] = ""; //关闭时间,DateTime类型
                //domBody[0]["cbclosedate"] = ""; //关闭日期,DateTime类型
                //domBody[0]["upsotype"] = ""; //上游单据类型,int类型
                //domBody[0]["cupsocode"] = ""; //上游单据号,string类型
                //domBody[0]["iinvmpcost"] = ""; //最高进价,double类型
                //domBody[0]["cdemandmemo"] = ""; //需求分类代号说明,string类型
                //domBody[0]["iorderdid"] = ""; //销售订单子表id,int类型
                //domBody[0]["iordertype"] = ""; //销售订单类型,int类型
                //domBody[0]["csoordercode"] = ""; //销售订单号,string类型
                //domBody[0]["iorderseq"] = ""; //销售订单行号,int类型
                //domBody[0]["bgift"] = ""; //赠品,string类型
                //

                //domHead.loadXML(strH);
                //domBody.loadXML(strB);
            }


            if (true)
            {
                VoucherCO_PU.clsVoucherCO_PU obj = new VoucherCO_PU.clsVoucherCO_PU();
                //
                bool   bPositive         = true;
                string sBillType         = "";
                string sBusType          = "普通采购";
                VoucherVerify.UseMode um = VoucherVerify.UseMode.CS;
                string sfBusType         = "普通采购";
                string sPtCode           = "07";
                //
                Info_PU.ClsS_Infor clsinfo = new Info_PU.ClsS_Infor();
                string             str     = clsinfo.Init(ref g_oLogin, sBusType, sPtCode);
                ADODB.Connection   oCon    = new ADODB.Connection();
                oCon.CursorLocation   = ADODB.CursorLocationEnum.adUseClient;
                oCon.ConnectionString = g_oLogin.UFDataConnstringForNet;
                oCon.Open(g_oLogin.UfDbName, "", "", -1);
                //
                obj.Init(VoucherCO_PU.vouchertype.采购订单, ref g_oLogin, ref oCon, ref clsinfo, ref bPositive, ref sBillType, ref sBusType, ref um, sfBusType, sPtCode);
                obj.bOutTrans = false;
                //
                short            VoucherState    = 2;//增加
                object           vNewID          = "";
                IXMLDOMDocument2 CurDom          = new MSXML2.DOMDocument();
                string           sOverDetailsXml = "";
                IXMLDOMDocument2 DomMsg          = new MSXML2.DOMDocument();
                Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                string strRet = obj.VoucherSave(domHead, domBody, VoucherState, ref vNewID, ref CurDom, um, ref sOverDetailsXml, ref DomMsg);
                Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                if (string.IsNullOrEmpty(strRet))
                {
                    return(true);
                }
                else
                {
                    errMsg = strRet;
                    return(false);
                }
            }

            #endregion
        }
        private void BuildCards()
        {
            // 1. Add required css rules
            CSS.SwapStyleSheet("cards", Url.Content("~/Areas/Element_Basic/Content/styles.css"));

            // 2. Append main Container
            Element topEl = DomHelper.Append(X.Body(), new DomObject {
                ID = "Cards1", Cls = "cards-container"
            });

            // 3. Append header Container
            Element header = DomHelper.Append(topEl, new DomObject {
                Cls = "cards-header"
            });

            DomHelper.Append(header,
                             new DomObject
            {
                Tag      = HtmlTextWriterTag.Ul,
                Children =
                {
                    new DomObject         {
                        Tag      = HtmlTextWriterTag.Li,
                        Children =
                        {
                            new DomObject {
                                Tag          = HtmlTextWriterTag.A,
                                Html         = "RECENT",
                                CustomConfig ={ new ConfigItem("rel", "c0",      ParameterMode.Value) }
                            }
                        }
                    },

                    new DomObject         {
                        Tag      = HtmlTextWriterTag.Li,
                        Children =
                        {
                            new DomObject {
                                Tag          = HtmlTextWriterTag.A,
                                Html         = "COMMENTS",
                                CustomConfig ={ new ConfigItem("rel", "c1",      ParameterMode.Value) }
                            }
                        }
                    },

                    new DomObject         {
                        Tag      = HtmlTextWriterTag.Li,
                        Children =
                        {
                            new DomObject {
                                Tag          = HtmlTextWriterTag.A,
                                Html         = "POPULAR",
                                CustomConfig ={ new ConfigItem("rel", "c2",      ParameterMode.Value) }
                            }
                        }
                    },

                    new DomObject         {
                        Tag      = HtmlTextWriterTag.Li,
                        Children =
                        {
                            new DomObject {
                                Tag          = HtmlTextWriterTag.A,
                                Html         = "TAGS",
                                CustomConfig ={ new ConfigItem("rel", "c3",      ParameterMode.Value) }
                            }
                        }
                    }
                }
            }
                             );

            // 4. Append Content Container
            Element content = DomHelper.Append(topEl, new DomObject {
                Cls = "cards-content"
            });
            Element curCard = DomHelper.Append(content,
                                               new DomObject
            {
                Cls      = "current-card",
                Children =
                {
                    new DomObject {
                        Html = "RECENT", ID = "c0", Cls = "card"
                    },
                    new DomObject {
                        Html = "COMMENTS<br />COMMENTS", ID = "c1", Cls = "card"
                    },
                    new DomObject {
                        Html = "POPULAR<br />POPULAR<br />POPULAR", ID = "c2", Cls = "card"
                    },
                    new DomObject {
                        Html = "TAGS<br />TAGS<br />TAGS<br />TAGS", ID = "c3", Cls = "card"
                    }
                }
            }
                                               );

            curCard.SetStyle("height", "auto");

            topEl.Chaining = true;

            topEl.Select(".cards-header a", true)
            .Hover(new JFunction {
                Fn = "hoverCard"
            }, JFunction.EmptyFn)
            .First()
            .AddCls("current")
            .Render();

            content.Chaining = true;
            content.Select(".card").SetVisibilityMode(VisibilityMode.Display).Hide().First().Show().Render();
        }
        /// <exception cref="System.IO.IOException"/>
        public static RootStatement CodeToJava(StructMethod mt, MethodDescriptor md, VarProcessor
                                               varProc)
        {
            StructClass cl            = mt.GetClassStruct();
            bool        isInitializer = ICodeConstants.Clinit_Name.Equals(mt.GetName());

            // for now static initializer only
            mt.ExpandData();
            InstructionSequence seq   = mt.GetInstructionSequence();
            ControlFlowGraph    graph = new ControlFlowGraph(seq);

            DeadCodeHelper.RemoveDeadBlocks(graph);
            graph.InlineJsr(mt);
            // TODO: move to the start, before jsr inlining
            DeadCodeHelper.ConnectDummyExitBlock(graph);
            DeadCodeHelper.RemoveGotos(graph);
            ExceptionDeobfuscator.RemoveCircularRanges(graph);
            ExceptionDeobfuscator.RestorePopRanges(graph);
            if (DecompilerContext.GetOption(IFernflowerPreferences.Remove_Empty_Ranges))
            {
                ExceptionDeobfuscator.RemoveEmptyRanges(graph);
            }
            if (DecompilerContext.GetOption(IFernflowerPreferences.Ensure_Synchronized_Monitor
                                            ))
            {
                // special case: search for 'synchronized' ranges w/o monitorexit instruction (as generated by Kotlin and Scala)
                DeadCodeHelper.ExtendSynchronizedRangeToMonitorexit(graph);
            }
            if (DecompilerContext.GetOption(IFernflowerPreferences.No_Exceptions_Return))
            {
                // special case: single return instruction outside of a protected range
                DeadCodeHelper.IncorporateValueReturns(graph);
            }
            //		ExceptionDeobfuscator.restorePopRanges(graph);
            ExceptionDeobfuscator.InsertEmptyExceptionHandlerBlocks(graph);
            DeadCodeHelper.MergeBasicBlocks(graph);
            DecompilerContext.GetCounterContainer().SetCounter(CounterContainer.Var_Counter,
                                                               mt.GetLocalVariables());
            if (ExceptionDeobfuscator.HasObfuscatedExceptions(graph))
            {
                DecompilerContext.GetLogger().WriteMessage("Heavily obfuscated exception ranges found!"
                                                           , IFernflowerLogger.Severity.Warn);
                if (!ExceptionDeobfuscator.HandleMultipleEntryExceptionRanges(graph))
                {
                    DecompilerContext.GetLogger().WriteMessage("Found multiple entry exception ranges which could not be splitted"
                                                               , IFernflowerLogger.Severity.Warn);
                }
                ExceptionDeobfuscator.InsertDummyExceptionHandlerBlocks(graph, cl.GetBytecodeVersion
                                                                            ());
            }
            RootStatement    root  = DomHelper.ParseGraph(graph);
            FinallyProcessor fProc = new FinallyProcessor(md, varProc);

            while (fProc.IterateGraph(mt, root, graph))
            {
                root = DomHelper.ParseGraph(graph);
            }
            // remove synchronized exception handler
            // not until now because of comparison between synchronized statements in the finally cycle
            DomHelper.RemoveSynchronizedHandler(root);
            //		LabelHelper.lowContinueLabels(root, new HashSet<StatEdge>());
            SequenceHelper.CondenseSequences(root);
            ClearStructHelper.ClearStatements(root);
            ExprProcessor proc = new ExprProcessor(md, varProc);

            proc.ProcessStatement(root, cl);
            SequenceHelper.CondenseSequences(root);
            StackVarsProcessor stackProc = new StackVarsProcessor();

            do
            {
                stackProc.SimplifyStackVars(root, mt, cl);
                varProc.SetVarVersions(root);
            }while (new PPandMMHelper().FindPPandMM(root));
            while (true)
            {
                LabelHelper.CleanUpEdges(root);
                do
                {
                    MergeHelper.EnhanceLoops(root);
                }while (LoopExtractHelper.ExtractLoops(root) || IfHelper.MergeAllIfs(root));
                if (DecompilerContext.GetOption(IFernflowerPreferences.Idea_Not_Null_Annotation))
                {
                    if (IdeaNotNullHelper.RemoveHardcodedChecks(root, mt))
                    {
                        SequenceHelper.CondenseSequences(root);
                        stackProc.SimplifyStackVars(root, mt, cl);
                        varProc.SetVarVersions(root);
                    }
                }
                LabelHelper.IdentifyLabels(root);
                if (InlineSingleBlockHelper.InlineSingleBlocks(root))
                {
                    continue;
                }
                // initializer may have at most one return point, so no transformation of method exits permitted
                if (isInitializer || !ExitHelper.CondenseExits(root))
                {
                    break;
                }
            }
            // FIXME: !!
            //if(!EliminateLoopsHelper.eliminateLoops(root)) {
            //  break;
            //}
            ExitHelper.RemoveRedundantReturns(root);
            SecondaryFunctionsHelper.IdentifySecondaryFunctions(root, varProc);
            varProc.SetVarDefinitions(root);
            // must be the last invocation, because it makes the statement structure inconsistent
            // FIXME: new edge type needed
            LabelHelper.ReplaceContinueWithBreak(root);
            mt.ReleaseResources();
            return(root);
        }