WebAPI/Controllers/XSGL/Xs_SeOrderBillController.cs
@@ -1,4 +1,6 @@
using Newtonsoft.Json.Linq;
using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Pub_Class;
using System;
using System.Collections;
@@ -13,39 +15,32 @@
    //销售订单Controller
    public class Xs_SeOrderBillController : ApiController
    {
        //获取系统参数
        Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
        public DBUtility.ClsPub.Enum_BillStatus BillStatus;
        private json objJsonResult = new json();
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
        DataSet ds;
        /// <summary>
        /// 返回销售订单列表
        /// 根据基础资料ID 查找记录
        ///参数:string sql。
        ///返回值:object。
        /// </summary>
        [Route("Xs_SeOrderBill/list")]
        [Route("Xs_SeOrderBill/cx")]
        [HttpGet]
        public object list(string sWhere)
        public object cx(long HInterID)
        {
            try
            {
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select * from h_v_IF_SeOrderBillList " + sWhere, "h_v_IF_SeOrderBillList");
                }
                else
                {
                    string sql1 = "select * from h_v_IF_SeOrderBillList where 1 = 1 ";
                    string sql = sql1 + sWhere;
                    ds = oCN.RunProcReturn(sql, "h_v_IF_SeOrderBillList");
                }
                ds = oCN.RunProcReturn("select * from h_v_IF_SeOrderBillList where hmainid =" + HInterID, "h_v_IF_SeOrderBillList");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.Message = "false!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -67,9 +62,696 @@
                return objJsonResult;
            }
        }
        /// <summary>
        /// 返回销售订单列表
        ///参数:string sql。
        ///返回值:object。
        /// </summary>
        [Route("Xs_SeOrderBill/list")]
        [HttpGet]
        public object list(string sWhere,string user)
        {
            try
            {
                //判断查询权限
                if (!DBUtility.ClsPub.Security_Log("Xs_SeOrderBillQuery", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限查询!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select * from h_v_IF_SeOrderBillList order by hmainid desc", "h_v_IF_SeOrderBillList");
                }
                else
                {
                    string sql1 = "select * from h_v_IF_SeOrderBillList where 1 = 1 ";
                    string sql = sql1 + sWhere+ " order by hmainid desc";
                    ds = oCN.RunProcReturn(sql, "h_v_IF_SeOrderBillList");
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// <summary>
        /// 返回销售订单动态列表
        /// </summary>
        /// <param name="sWhere"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        [Route("Xs_SeOrderBill/DyColList")]
        [HttpGet]
        public object DyColList(string sWhere, string user)
        {
            try
            {
                //判断查询权限
                if (!DBUtility.ClsPub.Security_Log("Xs_SeOrderBillQuery", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限查询!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                ds = oCN.RunProcReturn("select * from h_v_IF_SeOrderBillList where 1 = 1 " + sWhere + " order by hmainid desc ", "h_v_IF_SeOrderBillList");
                List<object> listCol = new List<object>();
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string str = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    listCol.Add(JsonConvert.DeserializeObject(str));
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                objJsonResult.list = listCol;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #region 销售订单 保存/编辑功能
        [Route("Xs_SeOrder/SeOrderBillEdit")]
        [HttpPost]
        public object SeOrderBillEdit([FromBody] JObject sMainSub)
        {
            try
            {
                var _value = sMainSub["sMainSub"].ToString();
                string msg1 = _value.ToString();
                oCN.BeginTran();
                //保存主表
                objJsonResult = AddBillMain(msg1);
                if (objJsonResult.code == "0")
                {
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = objJsonResult.Message;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.Commit();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "单据保存成功!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        public json AddBillMain(string msg1)
        {
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString(); //主表数据
            string msg3 = sArray[1].ToString(); //子表数据
            int OperationType = int.Parse(sArray[2].ToString()); // 数据类型 1添加 3修改
            string user = sArray[3].ToString();
            string msg_allVal = sArray[4].ToString(); //主表+子表所有数据
            try
            {
                msg2 = "[" + msg2.ToString() + "]";
                List<ClsXs_SeOrderBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsXs_SeOrderBillMain>>(msg2);
                long HInterID = mainList[0].HInterID;//递入type得到的单据ID
                string HBillNo = mainList[0].HBillNo;//递入type得到的单据号
                long HPRDORGID = mainList[0].HPRDORGID;//组织
                DateTime HDate = mainList[0].HDate;//日期
                string HRemark = mainList[0].HRemark;//备注
                long HCusID = mainList[0].HCusID;//客户
                long HEmpID = mainList[0].HEmpID;//业务员
                long HDeptID = mainList[0].HDeptID;//部门
                long HCurID = mainList[0].HCurID;//币别
                Single HExRate = mainList[0].HExRate;//汇率
                long HManagerID = mainList[0].HManagerID;//主管
                long HSellSID = mainList[0].HSellSID;//销售方式
                long HSSID = mainList[0].HSSID;//结算方式
                DateTime HSSDate = mainList[0].HSSDate;//结算日期
                string HMaker = user;//制单人
                string HAddress = mainList[0].HAddress;//地址
                List<ClsXs_SeOrderBillMain> mainList2 = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsXs_SeOrderBillMain>>(msg2);
                DateTime dt = DateTime.Now;
                long HYear = mainList2[0].HYear == null ? 0 : mainList2[0].HYear;
                long HPeriod = mainList2[0].HPeriod == null ? 0 : mainList2[0].HPeriod;
                string HBillType = mainList2[0].HBillType == null ? "''" : mainList2[0].HBillType;
                string HBillSubType = mainList2[0].HBillSubType == null ? "''" : mainList2[0].HBillSubType;
                int HBillStatus = mainList2[0].HBillStatus == null ? 0 : mainList2[0].HBillStatus;
                string HChecker = mainList2[0].HChecker == null ? "''" : mainList2[0].HChecker;
                string HCheckDate = mainList2[0].HCheckDate == null ? "''" : mainList2[0].HCheckDate;
                string HMakeDate = mainList2[0].HMakeDate == null ? "''" : mainList2[0].HMakeDate;
                string HCloseMan = mainList2[0].HCloseMan == null ? "''" : mainList2[0].HCloseMan;
                string HCloseDate = mainList2[0].HCloseDate == null ? "''" : mainList2[0].HCloseDate;
                long HERPInterID = mainList2[0].HERPInterID == null ? 0 : mainList2[0].HERPInterID;
                string HERPBillType = mainList2[0].HERPBillType == null ? "''" : mainList2[0].HERPBillType;
                long HSALEORGID = mainList2[0].HSALEORGID == null ? 0 : mainList2[0].HSALEORGID;
        ds = oCN.RunProcReturn("select * from h_v_IF_SeOrderBillList where hmainid=" + HInterID + " and 单据号='" + HBillNo + "'", "h_v_IF_SeOrderBillList");
                if ((OperationType == 1 || OperationType == 2) && ds.Tables[0].Rows.Count == 0)//新增
                {
                    DataSet Ds;
                    Int64 NewHInterID = 1;
                    Ds = oCN.RunProcReturn("select MAX(HInterID)HInterID from Xs_SeOrderBillMain", "Xs_SeOrderBillMain");
                    if (Ds.Tables[0].Rows.Count != 0 && ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString()) != 0)
                    {
                        NewHInterID = ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString());
                        NewHInterID += 1;
                    }
                    //主表
                    oCN.RunProc(@"Insert Into Xs_SeOrderBillMain
                        (HBillType,HInterID,HBillNo,HDate
                        ,HYear,HPeriod,HRemark,HMaker,HMakeDate
                        ,HEmpID,HCusID
                        ,HBillSubType,HAddress,HSSDate,HSSID,HSellSID,HCurID,HExRate, HManagerID,HDeptID
                        ,HExplanation,HCheckFlow,HBillStatus,HInnerBillNo
                        ,HICMOFlag,HChangeMan,HSALEORGID,HERPInterID,HERPBillType
                        ,HCloseDate,HCloseMan)
                        values(" + "1401," + HInterID + ",'" + HBillNo + "','" + HDate + "','" +
                    DateTime.Now.Year + "','" + DateTime.Now.Month + "','" + HRemark + "','" + HMaker + "','" + HMakeDate +
                    "'," + HEmpID + "," + HCusID + ",'" + HBillType + "','" + HAddress + "','" + HSSDate +
                    "'," + HSSID + "," + HSellSID + "," + HCurID + "," +  HExRate + "," + HManagerID + "," + HDeptID + ",'" + "''" + "'," + "0," + HBillStatus + ",'" + "''" + "'," +
                    0 + ",'" + "''" + "'," + HSALEORGID + "," + HERPInterID + ",'" + HERPBillType + "','" + HCloseDate + "','" + HCloseMan + "')");
                }
                else if (OperationType == 3 || ds.Tables[0].Rows.Count != 0)
                { //修改
                    oCN.RunProc("update Xs_SeOrderBillMain  set " +
                                "HRemark='" + HRemark + "', HChecker='" + HMaker + "', HCheckDate=getdate()" +
                                 ", HEmpID=" + HEmpID + ", HCusID=" + HCusID + ",HAddress='" + HAddress + "',HDeptID=" + HDeptID
                                 + ",HCurID=" + HCurID + ",HExRate=" + HExRate + ",HManagerID=" + HManagerID + ",HSellSID=" + HSellSID
                                 + ",HSSID=" + HSSID + ",HSSDate='" + HSSDate + "' where HInterID=" + HInterID);
                    //删除子表
                    oCN.RunProc("delete from Xs_SeOrderBillSub where HInterID='" + HInterID + "'");
                }
                //保存子表
                objJsonResult = AddBillSub(msg3, HInterID, OperationType);
                if (objJsonResult.code == "0")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = objJsonResult.Message;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = null;
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        public json AddBillSub(string msg3, long HInterID, int OperationType)
        {
            List<ClsXs_SeOrderBillSub> DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsXs_SeOrderBillSub>>(msg3);
            List<ClsXs_SeOrderBillSub> DetailColl2 = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsXs_SeOrderBillSub>>(msg3);
            long HSourceInterID = DetailColl2[0].HSourceInterID == null ? 0 : DetailColl2[0].HSourceInterID;
            long HSourceEntryID = DetailColl2[0].HSourceEntryID == null ? 0 : DetailColl2[0].HSourceEntryID;
            string HSourceBillNo = DetailColl2[0].HSourceBillNo == null ? "''" : DetailColl2[0].HSourceBillNo;
            string HSourceBillType = DetailColl2[0].HSourceBillType == null ? "''" : DetailColl2[0].HSourceBillType;
            double HRelationQty = DetailColl2[0].HRelationQty == null ? 0 : DetailColl2[0].HRelationQty;
            long HPropertyID = DetailColl2[0].HPropertyID == null ? 0 : DetailColl2[0].HPropertyID;
            string HBatChNo = DetailColl2[0].HBatChNo == null ? "''" : DetailColl2[0].HBatChNo;
            long HAuxPropID = DetailColl2[0].HAuxPropID == null ? 0 : DetailColl2[0].HAuxPropID;
            string HMTONo = DetailColl2[0].HMTONo == null ? "''" : DetailColl2[0].HMTONo;
            long HERPInterID = DetailColl2[0].HERPInterID == null ? 0 : DetailColl2[0].HERPInterID;
            long HERPEntryID = DetailColl2[0].HERPEntryID == null ? 0 : DetailColl2[0].HERPEntryID;
            decimal HBackRelationQty = DetailColl2[0].HBackRelationQty == null ? 0 : DetailColl2[0].HBackRelationQty;
            long HWhID = DetailColl2[0].HWhID == null ? 0 : DetailColl2[0].HWhID;
            long HSPID = DetailColl2[0].HSPID == null ? 0 : DetailColl2[0].HSPID;
            int i = 0;
            foreach (ClsXs_SeOrderBillSub oSub in DetailColl)
            {
                i++;
                if (oSub.HQty <= 0 || oSub.HQty == null)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "第" + i + "行,数量不能为0或者小于0";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (oSub.HMaterID == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "第" + i + "行,物料不能为空";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //if (oSub.HSourceID == 0)
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "第" + i + "行,生产资源不能为空";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                if (oSub.HUnitID == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "第" + i + "行,计量单位不能为空";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                DataSet Cs;
                Int64 NewHEntryID = 1;
                Cs = oCN.RunProcReturn("select MAX(HEntryID)HEntryID from Xs_SeOrderBillSub", "Xs_SeOrderBillSub");
                if (Cs.Tables[0].Rows.Count != 0 && ClsPub.isLong(Cs.Tables[0].Rows[0]["HEntryID"].ToString()) != 0)
                {
                    NewHEntryID = ClsPub.isLong(Cs.Tables[0].Rows[0]["HEntryID"].ToString());
                    NewHEntryID += 1;
                }
                oCN.RunProc($@"Insert into Xs_SeOrderBillSub
                (HInterID,HENTRYID,HQty,HMaterID,HUnitID,HRemark
            ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType
                ,HRelationQty,HRelationMoney,HPrice,HTaxPrice,HMoney,HDiscountRate
                ,HRelTaxPrice,HTaxRate,HTaxMoney,HlineTotal,HlineTotalBB,HDate,HOutStockQty,HInvoiceQty
                ,HPropertyID,HBatChNo,HAuxPropID,HMTONo,HERPInterID,HERPEntryID,HBackRelationQty,HWhID,HSPID)
                 values({HInterID},{NewHEntryID},{(oSub.HQty == null ? 0 : oSub.HQty)}
                ,{oSub.HMaterID},{oSub.HUnitID},'{oSub.HRemark}',{HSourceInterID},{HSourceEntryID},{HSourceBillNo},{HSourceBillType},{HRelationQty},0,{oSub.HPrice},{oSub.HTaxPrice},{oSub.HMoney},{oSub.HDiscountRate},{oSub.HRelTaxPrice},{oSub.HTaxRate},{oSub.HTaxMoney},{oSub.HlineTotal},{oSub.HlineTotalBB},getdate(),{oSub.HOutStockQty},{oSub.HInvoiceQty},{HPropertyID},{HBatChNo},{HAuxPropID},
                  {HMTONo},{HERPInterID},{HERPEntryID},{HBackRelationQty},{HWhID},{HSPID})");
            }
            objJsonResult.code = "1";
            objJsonResult.count = 1;
            objJsonResult.Message = null;
            objJsonResult.data = null;
            return objJsonResult;
        }
        #endregion
        /// <summary>
        ///删除功能
        /// </summary>
        /// <returns></returns>
        [Route("Xs_SeOrderBill/DeltetSeOrderBill")]
        [HttpGet]
        public object DeltetSeOrderBill(string HInterID)
        {
            try
            {
                oCN.BeginTran();
                oCN.RunProc("Delete From Xs_SeOrderBillMain where HInterID = " + HInterID);
                oCN.RunProc("Delete From Xs_SeOrderBillSub where HInterID = " + HInterID);
                oCN.Commit();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "删除成功!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #region [同步单据]
        [Route("Xs_SeOrderBill/Xs_SeOrderBillViewApi")]
        [HttpGet]
        public json Xs_SeOrderBillViewApi(string BillNo, string BillType)
        {
            string sql = string.Empty;
            string sReturn = "";
            if (oSystemParameter.ShowBill(ref sReturn) == true)
            {
                //系统参数是否为私有云模式,N为公有云模式,Y为私有云模式
                if (oSystemParameter.omodel.WMS_CloudMode == "Y")
                {
                    #region [私有云模式,直接调用数据库存储过程更新]
                    try
                    {
                        oCN.BeginTran();
                        SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                        DataSet DS = oCn.RunProcReturn("exec h_p_WMS_ERPSourceBillToLocal '" + BillNo + "','" + BillType + "'", "h_p_WMS_ERPSourceBillToLocal");
                        if (DS == null)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据同步失败";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        else
                        {
                            if (DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0]["HBack"]) == "2")
                            {
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "ERP中不存在该单据号";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
                            else
                            {
                                objJsonResult.code = "1";
                                objJsonResult.count = 1;
                                objJsonResult.Message = "单据同步成功";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "Exception!" + e.ToString();
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    #endregion
                }
                else
                {
                    #region [公有云模式,调用WEBAPI的方式进行更新]
                    var json = new
                    {
                        CreateOrgId = 0,
                        Number = BillNo,
                        Id = ""
                    };
                    #region [金蝶部分]
                    //登录金蝶
                    var loginRet = InvokeHelper.Login();
                    var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                    //判断是否登录成功
                    if (isSuccess < 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = loginRet;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //查看 获取数据
                    var _result = InvokeHelper.View("SAL_SaleOrder", JsonConvert.SerializeObject(json));
                    var _saveObj = JObject.Parse(_result);
                    //判断数据是否获取成功
                    if (_saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "金蝶销售订单同步失败jsonRoot:" + _result;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    #endregion
                    //获取主表数据
                    DataSet Ds;
                    Int64 InterID = 0;
                    Ds = oCN.RunProcReturn("select * from Xs_SeOrderBillMain where HBillNo = '" + BillNo + "'", "Xs_SeOrderBillMain");
                    if (Ds.Tables[0].Rows.Count != 0 && ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString()) != 0)
                    {
                        InterID = ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString());
                    }
                    #region [主表数据赋值]
                    var jsonData = new
                    {
                        HInterID = _saveObj["Result"]["Result"]["Id"],
                        HYear = DateTime.Now.Year,
                        HPeriod = DateTime.Now.Month,
                        HBillType = 1401,
                        HBillSubType = 1401,
                        HDate = _saveObj["Result"]["Result"]["Date"],
                        HBillNo = _saveObj["Result"]["Result"]["BillNo"],
                        HBillStatus = _saveObj["Result"]["Result"]["ApproverId_Id"].ToString() == Convert.ToString(0) ? 1 : 2,
                        HAddress = _saveObj["Result"]["Result"]["ReceiveAddress"],
                        HSSID = 0,
                        HSSDate = _saveObj["Result"]["Result"]["Date"],
                        HCusID = _saveObj["Result"]["Result"]["CustId_Id"],
                        HCurID = 0,
                        HExRate = 0,
                        HEmpID = _saveObj["Result"]["Result"]["SalerId_Id"],
                        HManagerID = 0,
                        HDeptID = _saveObj["Result"]["Result"]["SaleDeptId_Id"],
                        HExplanation = "",
                        HRemark = "CLOUD导入",
                        HInnerBillNo = _saveObj["Result"]["Result"]["Note"],
                        HChecker = _saveObj["Result"]["Result"]["ApproverId"]["Name"],
                        HCheckDate = _saveObj["Result"]["Result"]["ApproveDate"],
                        HMaker = _saveObj["Result"]["Result"]["CreatorId"]["Name"],
                        HMakeDate = _saveObj["Result"]["Result"]["CreateDate"],
                        HCloseMan = _saveObj["Result"]["Result"]["CloserId_Id"],
                        HCloseDate = _saveObj["Result"]["Result"]["CloseDate"],
                        HERPInterID = _saveObj["Result"]["Result"]["Id"],
                        HERPBillType = _saveObj["Result"]["Result"]["BillTypeId_Id"],
                        HSALEORGID = _saveObj["Result"]["Result"]["SaleOrgId_Id"],
                        HSALEGROUPID = _saveObj["Result"]["Result"]["SaleGroupId_Id"],
                        HRECEIVEID = _saveObj["Result"]["Result"]["ReceiveId_Id"],
                        HSETTLEID = _saveObj["Result"]["Result"]["SettleId_Id"],
                        HCHARGEID = _saveObj["Result"]["Result"]["ChargeId_Id"],
                        HHEADLOCID = _saveObj["Result"]["Result"]["HeadLocId_Id"],
                        HRECCONTACTID = 0,
                        HCORRESPONDORGID = _saveObj["Result"]["Result"]["CorrespondOrgId_Id"],
                        HBUSINESSTYPE = _saveObj["Result"]["Result"]["BusinessType"],
                    };
                    #endregion
                    // 删除主表对应数据
                    sql = $"delete from Xs_SeOrderBillMain where HInterID = " + InterID;
                    oCN.RunProc(sql);
                    //插入主表
                    sql = $@"
                insert into Xs_SeOrderBillMain
                (HInterID,HYear,HPeriod,HBillType,HBillSubType,HDate
               ,HBillNo,HBillStatus
               ,HAddress,HSSID,HSSDate,HCusID,HCurID,HExRate
               ,HEmpID,HManagerID,HDeptID,HExplanation,HRemark,HInnerBillNo
               ,HChecker,HCheckDate,HMaker,HMakeDate,HCloseMan,HCloseDate
               ,HERPInterID,HERPBillType,HSALEORGID,HSALEGROUPID,HRECEIVEID,HSETTLEID
               ,HCHARGEID,HHEADLOCID,HRECCONTACTID,HCORRESPONDORGID,HBUSINESSTYPE
                 )
                values
                ({jsonData.HInterID},{jsonData.HYear},{jsonData.HPeriod},{jsonData.HBillType},{jsonData.HBillSubType},
                '{jsonData.HDate}','{jsonData.HBillNo}',{jsonData.HBillStatus},'{jsonData.HAddress}',{jsonData.HSSID},'{jsonData.HSSDate}',{jsonData.HCusID},
                {jsonData.HCurID},{jsonData.HExRate},{jsonData.HEmpID},{jsonData.HManagerID},{jsonData.HDeptID},
                '{jsonData.HExplanation}','{jsonData.HRemark}','{jsonData.HInnerBillNo}','{jsonData.HChecker}','{jsonData.HCheckDate}',
                '{jsonData.HMaker}','{jsonData.HMakeDate}','{jsonData.HCloseMan}','{jsonData.HCloseDate}',{jsonData.HERPInterID},
                '{jsonData.HERPBillType}',{jsonData.HSALEORGID},{jsonData.HSALEGROUPID},{jsonData.HRECEIVEID},{jsonData.HSETTLEID},{jsonData.HCHARGEID},
                {jsonData.HHEADLOCID},{jsonData.HRECCONTACTID},{jsonData.HCORRESPONDORGID},'{jsonData.HBUSINESSTYPE}')";
                    oCN.RunProc(sql);
                    #region [申请子表变量]
                    var dataArr = _saveObj["Result"]["Result"]["SaleOrderEntry"];
                    DataSet Cs;
                    double RelationQty = 0;
                    #endregion
                    int i = 0;
                    // 获取子表数据
                    Cs = oCN.RunProcReturn("select * from Xs_SeOrderBillSub where HInterID = " + InterID, "Xs_SeOrderBillSub");
                    // 删除子表对应数据
                    sql = $"delete from Xs_SeOrderBillSub where HInterID = " + InterID;
                    oCN.RunProc(sql);
                    foreach (var oSub in dataArr)
                    {
                        #region [子表数据赋值]
                        if (Cs.Tables[0].Rows.Count != 0 && ClsPub.isLong(Cs.Tables[0].Rows[0]["HInterID"].ToString()) != 0)
                        {
                            RelationQty = ClsPub.isDoule(Cs.Tables[0].Rows[i]["HRelationQty"].ToString());
                            i++;
                        }
                        var subData = new
                        {
                            HInterID = _saveObj["Result"]["Result"]["Id"],
                            HEntryID = oSub["Id"],
                            HMaterID = oSub["MaterialId_Id"],
                            HUnitID = oSub["UnitId_Id"],
                            HQty = oSub["Qty"],
                            HPrice = oSub["Price"],
                            HTaxPrice = oSub["TaxPrice"],
                            HDiscountRate = oSub["DiscountRate"],
                            HRelTaxPrice = 0,
                            HMoney = 0,
                            HTaxRate = oSub["TaxRate"],
                            HTaxMoney = 0,
                            HLineTotal = 0,
                            HlineTotalBB = 0,
                            HDate = oSub["MinPlanDeliveryDate"],
                            HOutStockQty = oSub["StockBaseQty"],
                            HInvoiceQty = 0,
                            HRemark = oSub["Note"],
                            HSourceInterID = 0,
                            HSourceEntryID = 0,
                            HSourceBillNo = oSub["SrcBillNo"],
                            HSourceBillType = oSub["SrcType"],
                            HRelationQty = Convert.ToInt32(oSub["Qty"]) - Convert.ToInt32(oSub["BaseCanOutQty"]),
                            HPropertyID = 0,
                            HBatChNo = oSub["Lot_Text"],
                            HAuxPropID = oSub["AuxPropId_Id"],
                            HMTONo = oSub["MtoNo"],
                            HERPInterID = _saveObj["Result"]["Result"]["Id"],
                            HERPEntryID = oSub["Id"],
                            HBackRelationQty = Convert.ToInt32(oSub["Qty"]) - Convert.ToInt32(oSub["BaseCanReturnQty"]),
                            HWhID = oSub["SOStockId_Id"],
                            HSPID = oSub["SOStockLocalId_Id"],
                            HSTOCKORGID = oSub["StockOrgId_Id"],
                            HOWNERID = oSub["OwnerId_Id"],
                            HOWNERTYPEID = oSub["OwnerTypeId"],
                            HMAPID = oSub["MapId_Id"],
                            HSTOCKUNITID = oSub["StockUnitID_Id"],
                            HBASEUNITID = oSub["BaseUnitId_Id"],
                            HBFLOWID = oSub["FBFLowId_Id"],
                            HSETTLEORGID = oSub["SettleOrgId_Id"],
                            HTAXCOMBINATION = oSub["TaxCombination_Id"],
                            HPRICEUNITID = oSub["PriceUnitId_Id"],
                            HISFREE = oSub["IsFree"],
                            HPRICECOEFFICIENT = oSub["PriceCoefficient"],
                            HSYSPRICE = oSub["SysPrice"],
                            HLIMITDOWNPRICE = oSub["LimitDownPrice"],
                            HPARENTMATID = oSub["ParentMatId_Id"],
                            HROWTYPE = oSub["RowType"],
                            HROWID = oSub["RowId"],
                            HPARENTROWID = oSub["ParentRowId"],
                            HDELIVERYCONTROL = oSub["DeliveryControl"],
                            HLOCALCURRID = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["LocalCurrId_Id"],
                            HEXCHANGETYPEID = oSub["ExchangeTypeId_Id"],
                            HSETTLECURRID = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["SettleCurrId_Id"],
                            HSETTLEMODEID = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["SettleModeId_Id"],
                            HRECCONDITIONID = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["RecConditionId_Id"],
                            HISINCLUDEDTAX = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["IsIncludedTax"],
                            HISPRICEEXCLUDETAX = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["IsPriceExcludeTax"],
                            HEXCHANGERATE = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["ExchangeRate"],
                            HTAXRATEID = 0,
                            HCOSTPERCENT =0,
                            HVAT = 0,
                            HSELLERWITHHOLDING = 0,
                            HBUYERWITHHOLDING = 0,
                            HPRICELISTENTRY = oSub["PriceListEntry_Id"]
                        };
                        #endregion
                        //插入子表
                        sql = $@"
                 insert into Xs_SeOrderBillSub
                 (HInterID,HEntryID,HMaterID,HUnitID,HQty,HPrice
               ,HTaxPrice,HDiscountRate,HRelTaxPrice,HMoney,HTaxRate,HTaxMoney
               ,HLineTotal,HlineTotalBB,HDate,HOutStockQty,HInvoiceQty,HRemark
               ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType
               ,HRelationQty,HPropertyID,HBatChNo,HAuxPropID,HMTONo
               ,HERPInterID,HERPEntryID,HBackRelationQty,HWhID,HSPID
               ,HSTOCKORGID,HOWNERID,HOWNERTYPEID,HMAPID,HSTOCKUNITID,HBASEUNITID
               ,HBFLOWID,HSETTLEORGID,HTAXCOMBINATION,HPRICEUNITID,HISFREE,HPRICECOEFFICIENT
               ,HSYSPRICE,HLIMITDOWNPRICE,HPARENTMATID,HROWTYPE,HROWID,HPARENTROWID
               ,HDELIVERYCONTROL,HLOCALCURRID,HEXCHANGETYPEID,HSETTLECURRID,HSETTLEMODEID
               ,HRECCONDITIONID,HISINCLUDEDTAX,HISPRICEEXCLUDETAX,HEXCHANGERATE,HTAXRATEID
               ,HCOSTPERCENT,HVAT,HSELLERWITHHOLDING,HBUYERWITHHOLDING,HPRICELISTENTRY
                 )
                 values
                 ({subData.HInterID},{subData.HEntryID},{subData.HMaterID},{subData.HUnitID},{subData.HQty},{subData.HPrice},
                  {subData.HTaxPrice},{subData.HDiscountRate},{subData.HRelTaxPrice},{subData.HMoney},{subData.HTaxRate},{subData.HTaxMoney},
                  {subData.HLineTotal},{subData.HlineTotalBB},'{subData.HDate}',{subData.HOutStockQty},{subData.HInvoiceQty},'{subData.HRemark}',
                  {subData.HSourceInterID},{subData.HSourceEntryID},'{subData.HSourceBillNo}','{subData.HSourceBillType}',{subData.HRelationQty},
                  {subData.HPropertyID},'{subData.HBatChNo}',{subData.HAuxPropID},'{subData.HMTONo}',{subData.HERPInterID},{subData.HERPEntryID},
                  {subData.HBackRelationQty},{subData.HWhID},{subData.HSPID},{subData.HSTOCKORGID},{subData.HOWNERID},
                  '{subData.HOWNERTYPEID}','{subData.HMAPID}',{subData.HSTOCKUNITID},{subData.HBASEUNITID},'{subData.HBFLOWID}',
                  {subData.HSETTLEORGID},{subData.HTAXCOMBINATION},{subData.HPRICEUNITID},'{subData.HISFREE}',
                  {subData.HPRICECOEFFICIENT},{subData.HSYSPRICE},{subData.HLIMITDOWNPRICE},{subData.HPARENTMATID},'{subData.HROWTYPE}',
                  '{subData.HROWID}','{subData.HPARENTROWID}','{subData.HDELIVERYCONTROL}',{subData.HLOCALCURRID},'{subData.HEXCHANGETYPEID}',
                  {subData.HSETTLECURRID},{subData.HSETTLEMODEID},{subData.HRECCONDITIONID},'{subData.HISINCLUDEDTAX}','{subData.HISPRICEEXCLUDETAX}',
                  {subData.HEXCHANGERATE},{subData.HTAXRATEID},{subData.HCOSTPERCENT},{subData.HVAT},{subData.HSELLERWITHHOLDING},
                  {subData.HBUYERWITHHOLDING},{subData.HPRICELISTENTRY})";
                        oCN.RunProc(sql);
                    }
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "单据同步成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
        //
                    #endregion
                }
            }
            else
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "单据读取失败!";
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
    }
}