领料出库校验上传方法完善修改,采购入库、生产入库校验上传方法新增
1个文件已修改
836 ■■■■■ 已修改文件
CLOUDWEB/WebService1.asmx.cs 836 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CLOUDWEB/WebService1.asmx.cs
@@ -21890,31 +21890,81 @@
        [WebMethod]
        public bool set_SaveMateOutBill_BillCheck(Model.ClsKf_MateOutBillMain oMain, ref string sErrMsg)
        {
            if (set_SaveMateOutBill_CLD_BillCheck(oMain, ref sErrMsg) == true)
            {
                //上传成功
                return true;
            }
            else
            {
                //上传失败
                sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";上传单据失败!" + sErrMsg;
                return false;
            }
        }
        public bool set_SaveMateOutBill_CLD_BillCheck(Model.ClsKf_MateOutBillMain oMain, ref string sErrMsg)
        {
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            //获取系统参数
            Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
            if (oSystemParameter.ShowBill(ref sErrMsg) == false)
            if (oSystemParameter.ShowBillByOrgID(oMain.HSTOCKORGID, ref sErrMsg) == false)
            {
                sErrMsg = "获取系统参数失败! " + sErrMsg;
                return false;
            }
            //WMS系统同步至ERP的类型(WISE、CLOUD、MES)
            if (oSystemParameter.omodel.Kf_MateOutBillCheck_ERPMode.ToUpper() == "WISE")
            {
                sErrMsg = "暂无此功能!";
                return false;
            }
            else if (oSystemParameter.omodel.Kf_MateOutBillCheck_ERPMode.ToUpper() == "CLOUD")
            {
                //原单据为扫码生成,对原扫描的条码进行核对
                if (oSystemParameter.omodel.Kf_MateOutBillCheck_SourceBarCodeCtl == "Y")
                {
                    sErrMsg = "暂不支持扫码生成单据的校验功能!";
                    return false;
                }
                //原单据非扫码生成
                else
                {
                    if (set_SaveMateOutBill_CLD_BillCheck(oMain, oSystemParameter.omodel, ref sErrMsg) == true)
                    {
                        //上传成功
                        return true;
                    }
                    else
                    {
                        //上传失败
                        sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";上传单据失败!" + sErrMsg;
                        return false;
                    }
                }
            }
            else if (oSystemParameter.omodel.Kf_MateOutBillCheck_ERPMode.ToUpper() == "WMS")  //只生成WMS单据
            {
                //原单据为扫码生成,对原扫描的条码进行核对
                if (oSystemParameter.omodel.Kf_MateOutBillCheck_SourceBarCodeCtl == "Y")
                {
                    sErrMsg = "暂不支持扫码生成单据的校验功能!";
                    return false;
                }
                //原单据非扫码生成
                else
                {
                    if (set_SaveMateOutBill_WMS_BillCheck(oMain, oSystemParameter.omodel, ref sErrMsg) == true)
                    {
                        //上传成功
                        return true;
                    }
                    else
                    {
                        //上传失败
                        sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";上传单据失败!" + sErrMsg;
                        return false;
                    }
                }
            }
            else
            {
                sErrMsg = "WMS系统同步至ERP的类型对应系统参数设置错误!";
                return false;
            }
        }
        //CLOUD 原单据非扫码生成
        public bool set_SaveMateOutBill_CLD_BillCheck(Model.ClsKf_MateOutBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
        {
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            //上传前判断
            DataSet Ds = oCn.RunProcReturn("exec h_p_WMS_BeforeUpload_MateOutBillCheck " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + oMain.HBillType + "','" + oSystemParameter.omodel.Kf_MateOutBillCheck_MustQtyCtl + "'", "h_p_WMS_BeforeUpload_MateOutBillCheck");
            DataSet Ds = oCn.RunProcReturn("exec h_p_WMS_BeforeUpload_MateOutBillCheck " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + oMain.HBillType + "','" + oSystemParameterMain.Kf_MateOutBillCheck_MustQtyCtl + "'", "h_p_WMS_BeforeUpload_MateOutBillCheck");
            if (Ds == null || Ds.Tables[0].Rows.Count == 0)
            {
                sErrMsg = "校验上传前判断,发生错误!";
@@ -21955,7 +22005,7 @@
                    sCLOUDPsd = DBUtility.ClsPub.isStrNull(ds11.Tables[0].Rows[0]["HCloudUserPsd"]);
                }
                if (oSystemParameter.omodel.Kf_MateOutBillCheck_MustQtyCtl == "完全等于应收")
                if (oSystemParameterMain.Kf_MateOutBillCheck_MustQtyCtl == "完全等于应收")
                {
                    string HReturn;
                    ApiClient client = new ApiClient(Pub_Class.ClsPub.sCLOUDUrl);
@@ -21976,12 +22026,24 @@
                        if (HReturn.Contains("\"IsSuccess\":false") == true)
                        {
                            sErrMsg = "审核生产领料单失败!" + HReturn;
                            //反序列化json数据
                            var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                            //接收金蝶报错信息
                            var strErrorMsg = string.Empty;
                            //遍历获取报错信息
                            foreach (var item in retModel.Result.ResponseStatus.Errors)
                            {
                                strErrorMsg += item.Message + "\r\n";
                            };
                            sErrMsg = "校验审核生产领料单失败!" + strErrorMsg;
                            LogService.Write("校验审核生产领料单失败!" + HReturn);   //写入txt文本
                            oCn.RollBack();
                            return false;
                        }
                        else
                        {
                            sErrMsg = "审核生产领料单成功!单据号为:" + oMain.HBillNo;
                            LogService.Write("校验审核生产领料单成功!单据号为:" + oMain.HBillNo);   //写入txt文本
                            oCn.Commit();
                            return true;
                        }
@@ -22042,7 +22104,17 @@
                            if (HReturn.Contains("\"IsSuccess\":false") == true)
                            {
                                sErrMsg = "修改生产领料单失败!" + HReturn + sJson;
                                //反序列化json数据
                                var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                                //接收金蝶报错信息
                                var strErrorMsg = string.Empty;
                                //遍历获取报错信息
                                foreach (var item in retModel.Result.ResponseStatus.Errors)
                                {
                                    strErrorMsg += item.Message + "\r\n";
                                };
                                sErrMsg = "校验修改生产领料单失败!" + strErrorMsg;
                                LogService.Write("校验修改生产领料单失败!" + HReturn + sJson);   //写入txt文本
                                oCn.RollBack();
                                return false;
                            }
@@ -22062,7 +22134,17 @@
                                if (HReturn.Contains("\"IsSuccess\":false") == true)
                                {
                                    sErrMsg = "校验审核生产领料单失败!" + HReturn + sJson;
                                    //反序列化json数据
                                    var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                                    //接收金蝶报错信息
                                    var strErrorMsg = string.Empty;
                                    //遍历获取报错信息
                                    foreach (var item in retModel.Result.ResponseStatus.Errors)
                                    {
                                        strErrorMsg += item.Message + "\r\n";
                                    };
                                    sErrMsg = "校验审核生产领料单失败!" + strErrorMsg;
                                    LogService.Write("校验审核生产领料单失败!" + HReturn + sJson);   //写入txt文本
                                    oCn.RollBack();
                                    return false;
                                }
@@ -22070,6 +22152,8 @@
                                {
                                    //重新同步生产领料单
                                    oCn.RunProc("exec h_p_IFCLD_ERPSourceBillToLocal_MateOut '" + oMain.HBillNo + "'");
                                    sErrMsg = "修改并审核生产领料单成功!单据号为:" + oMain.HBillNo;
                                    LogService.Write("校验修改并审核生产领料单成功!单据号为:" + oMain.HBillNo);   //写入txt文本
                                    oCn.Commit();
                                    return true;
                                }
@@ -22087,6 +22171,46 @@
            catch (Exception e)
            {
                sErrMsg = "校验审核生产领料单失败!" + e.Message;
                oCn.RollBack();
                return false;
            }
        }
        //WMS   原单据非扫码生成    只生成WMS单据
        private bool set_SaveMateOutBill_WMS_BillCheck(Model.ClsKf_MateOutBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
        {
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            //上传前判断
            DataSet Ds = oCn.RunProcReturn("exec h_p_WMS_BeforeUpload_MateOutBillCheck_WMS " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + oMain.HBillType + "','" + oSystemParameterMain.WMS_WMSStockCtl_ERPMode + "'", "h_p_WMS_BeforeUpload_MateOutBillCheck_WMS");
            if (Ds == null || Ds.Tables[0].Rows.Count == 0)
            {
                sErrMsg = "校验上传前判断,发生错误!";
                return false;
            }
            else
            {
                if (DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0][0]) == 1)
                {
                    sErrMsg = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HRemark"]);
                    return false;
                }
            }
            try
            {
                oCn.BeginTran();
                //写入条码出入库表
                oCn.RunProc("EXEC h_p_Kf_ICStockBillSub_WMS_Insert_New " + oMain.HInterID.ToString() + ",'" + oMain.HBillType + "','" + oMain.HBillNo + "'");
                sErrMsg = "校验生产领料单成功!单据号为:" + oMain.HBillNo;
                LogService.Write("校验生产领料单成功!单据号为:" + oMain.HBillNo);   //写入txt文本
                oCn.Commit();
                return true;
            }
            catch (Exception e)
            {
                sErrMsg = "校验生产领料单失败!" + e.Message;
                oCn.RollBack();
                return false;
            }
@@ -32004,6 +32128,340 @@
        #endregion
        #region 采购入库    校验模式*
        //校验采购入库单
        [WebMethod]
        public bool set_SavePOStockInBill_BillCheck(Model.ClsKf_POStockInBillMain oMain, ref string sErrMsg)
        {
            //获取系统参数
            Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
            if (oSystemParameter.ShowBillByOrgID(oMain.HSTOCKORGID, ref sErrMsg) == false)
            {
                sErrMsg = "获取系统参数失败! " + sErrMsg;
                return false;
            }
            //WMS系统同步至ERP的类型(WISE、CLOUD、MES)
            if (oSystemParameter.omodel.Kf_POStockInBillCheck_ERPMode.ToUpper() == "WISE")
            {
                sErrMsg = "暂无此功能!";
                return false;
            }
            else if (oSystemParameter.omodel.Kf_POStockInBillCheck_ERPMode.ToUpper() == "CLOUD")
            {
                //原单据为扫码生成,对原扫描的条码进行核对
                if (oSystemParameter.omodel.Kf_POStockInBillCheck_SourceBarCodeCtl == "Y")
                {
                    sErrMsg = "暂不支持扫码生成单据的校验功能!";
                    return false;
                }
                //原单据非扫码生成
                else
                {
                    if (set_SavePOStockInBill_CLD_BillCheck(oMain, oSystemParameter.omodel, ref sErrMsg) == true)
                    {
                        //上传成功
                        return true;
                    }
                    else
                    {
                        //上传失败
                        sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";上传单据失败!" + sErrMsg;
                        return false;
                    }
                }
            }
            else if (oSystemParameter.omodel.Kf_POStockInBillCheck_ERPMode.ToUpper() == "WMS")  //只生成WMS单据
            {
                //原单据为扫码生成,对原扫描的条码进行核对
                if (oSystemParameter.omodel.Kf_POStockInBillCheck_SourceBarCodeCtl == "Y")
                {
                    sErrMsg = "暂不支持扫码生成单据的校验功能!";
                    return false;
                }
                //原单据非扫码生成
                else
                {
                    if (set_SavePOStockInBill_WMS_BillCheck(oMain, oSystemParameter.omodel, ref sErrMsg) == true)
                    {
                        //上传成功
                        return true;
                    }
                    else
                    {
                        //上传失败
                        sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";上传单据失败!" + sErrMsg;
                        return false;
                    }
                }
            }
            else
            {
                sErrMsg = "WMS系统同步至ERP的类型对应系统参数设置错误!";
                return false;
            }
        }
        //原单据非扫码生成
        public bool set_SavePOStockInBill_CLD_BillCheck(Model.ClsKf_POStockInBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
        {
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            //上传前判断
            DataSet Ds = oCn.RunProcReturn("exec h_p_WMS_BeforeUpload_POStockInBillCheck " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + oMain.HBillType + "','" + oSystemParameterMain.Kf_POStockInBillCheck_MustQtyCtl + "'", "h_p_WMS_BeforeUpload_POStockInBillCheck");
            if (Ds == null || Ds.Tables[0].Rows.Count == 0)
            {
                sErrMsg = "校验上传前判断,发生错误!";
                return false;
            }
            else
            {
                if (DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0][0]) == 1)
                {
                    sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";" + DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HRemark"]);
                    return false;
                }
            }
            try
            {
                oCn.BeginTran();
                //写入条码出入库表
                oCn.RunProc("EXEC h_p_Kf_ICStockBillSub_WMS_Insert_New " + oMain.HInterID.ToString() + ",'" + oMain.HBillType + "','" + oMain.HBillNo + "'");
                //从配置文件获取 CLOUD网址、账套信息、登录用户、登录密码
                if (!Pub_Class.ClsPub.GetCLOUDLoginInfo(ref Pub_Class.ClsPub.sExeReturnInfo))
                {
                    sErrMsg = Pub_Class.ClsPub.sExeReturnInfo;
                    return false;
                }
                //获取CLOUD账号密码
                string sCLOUDUseName = Pub_Class.ClsPub.sCLOUDUseName;
                string sCLOUDPsd = Pub_Class.ClsPub.sCLOUDPsd;
                DataSet ds11 = get_SaveCLOUDUseNameandPsd(oMain.HInterID);
                if (ds11 == null || ds11.Tables[0].Rows.Count == 0)
                {
                }
                else
                {
                    sCLOUDUseName = DBUtility.ClsPub.isStrNull(ds11.Tables[0].Rows[0]["HCloudUserName"]);
                    sCLOUDPsd = DBUtility.ClsPub.isStrNull(ds11.Tables[0].Rows[0]["HCloudUserPsd"]);
                }
                if (oSystemParameterMain.Kf_POStockInBillCheck_MustQtyCtl == "完全等于应收")
                {
                    string HReturn;
                    ApiClient client = new ApiClient(Pub_Class.ClsPub.sCLOUDUrl);
                    string dbId = Pub_Class.ClsPub.sCLOUDAcc; //AotuTest117
                    bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
                    if (bLogin)
                    {
                        //提交单据
                        string sJson2 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
                        var result2 = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit",
                        new object[] { "STK_InStock", sJson2 });
                        //审核单据
                        string sJson3 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
                        var result3 = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit",
                        new object[] { "STK_InStock", sJson3 });
                        HReturn = result3.ToString();
                        if (HReturn.Contains("\"IsSuccess\":false") == true)
                        {
                            //反序列化json数据
                            var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                            //接收金蝶报错信息
                            var strErrorMsg = string.Empty;
                            //遍历获取报错信息
                            foreach (var item in retModel.Result.ResponseStatus.Errors)
                            {
                                strErrorMsg += item.Message + "\r\n";
                            };
                            sErrMsg = "校验审核采购入库单失败!" + strErrorMsg;
                            LogService.Write("校验审核采购入库单失败!" + HReturn);   //写入txt文本
                            oCn.RollBack();
                            return false;
                        }
                        else
                        {
                            sErrMsg = "审核采购入库单成功!单据号为:" + oMain.HBillNo;
                            LogService.Write("校验审核采购入库单成功!单据号为:" + oMain.HBillNo);   //写入txt文本
                            oCn.Commit();
                            return true;
                        }
                    }
                    else
                    {
                        sErrMsg = "校验审核采购入库单失败!金蝶云登录失败!";
                        oCn.RollBack();
                        return false;
                    }
                }
                else
                {
                    //根据TMP表 返回 修改信息
                    DataSet Ds2;
                    Ds2 = oCn.RunProcReturn("exec h_p_Kf_GetPOStockInBillCheck " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'", "h_p_Kf_GetPOStockInBillCheck");
                    if (Ds2 == null || Ds2.Tables[0].Rows.Count == 0 || Ds2.Tables[1].Rows.Count == 0)
                    {
                        sErrMsg = "获取子表信息失败!";
                        oCn.RollBack();
                        return false;
                    }
                    else
                    {
                        string sJson_Main = "{\"Creator\":\"\",\"NeedUpDateFields\":[\"FInStockEntry\",\"FRealQty\"]," +
                            "\"NeedReturnFields\":[],\"IsDeleteEntry\":\"false\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\"," +
                            "\"IsEntryBatchFill\":\"True\",\"ValidateFlag\":\"True\",\"NumberSearch\":\"True\",\"InterationFlags\":\"\"," +
                            "\"Model\":{ \"FID\":\"" + Pub_Class.ClsPub.isStrNull(Ds2.Tables[0].Rows[0]["FID"]) + "\"," +
                            "\"FInStockEntry\":[";
                        string sJson_Entry = "";
                        for (int i = 0; i < Ds2.Tables[1].Rows.Count; i++)
                        {
                            if (sJson_Entry != "")
                            {
                                sJson_Entry = sJson_Entry + " , ";
                            }
                            sJson_Entry = sJson_Entry + "{" +
                            "\"FEntryID\":\"" + Pub_Class.ClsPub.isStrNull(Ds2.Tables[1].Rows[i]["FEntryID"]) + "\"," +
                            "\"FRealQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds2.Tables[1].Rows[i]["FRealQty"]) + "\" " +
                            "}";
                        }
                        string sJson_End = "  ]  }}";
                        string sJson = sJson_Main + sJson_Entry + sJson_End;
                        //验证用户信息
                        string HReturn;
                        ApiClient client = new ApiClient(Pub_Class.ClsPub.sCLOUDUrl);
                        string dbId = Pub_Class.ClsPub.sCLOUDAcc; //AotuTest117
                        bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
                        if (bLogin)
                        {
                            //修改单据
                            var result = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save",
                            new object[] { "STK_InStock", sJson });
                            HReturn = result.ToString();
                            if (HReturn.Contains("\"IsSuccess\":false") == true)
                            {
                                //反序列化json数据
                                var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                                //接收金蝶报错信息
                                var strErrorMsg = string.Empty;
                                //遍历获取报错信息
                                foreach (var item in retModel.Result.ResponseStatus.Errors)
                                {
                                    strErrorMsg += item.Message + "\r\n";
                                };
                                sErrMsg = "校验修改采购入库单失败!" + strErrorMsg;
                                LogService.Write("校验修改采购入库单失败!" + HReturn + sJson);   //写入txt文本
                                oCn.RollBack();
                                return false;
                            }
                            else
                            {
                                HReturn = "";
                                //提交单据
                                string sJson2 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
                                var result2 = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit",
                                new object[] { "STK_InStock", sJson2 });
                                //审核单据
                                string sJson3 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
                                var result3 = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit",
                                new object[] { "STK_InStock", sJson3 });
                                HReturn = result3.ToString();
                                if (HReturn.Contains("\"IsSuccess\":false") == true)
                                {
                                    //反序列化json数据
                                    var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                                    //接收金蝶报错信息
                                    var strErrorMsg = string.Empty;
                                    //遍历获取报错信息
                                    foreach (var item in retModel.Result.ResponseStatus.Errors)
                                    {
                                        strErrorMsg += item.Message + "\r\n";
                                    };
                                    sErrMsg = "校验审核采购入库单失败!" + strErrorMsg;
                                    LogService.Write("校验审核采购入库单失败!" + HReturn + sJson);   //写入txt文本
                                    oCn.RollBack();
                                    return false;
                                }
                                else
                                {
                                    //重新同步采购入库单
                                    oCn.RunProc("exec h_p_IFCLD_ERPSourceBillToLocal_POStockIn '" + oMain.HBillNo + "'");
                                    sErrMsg = "修改并审核采购入库单成功!单据号为:" + oMain.HBillNo;
                                    LogService.Write("校验修改并审核采购入库单成功!单据号为:" + oMain.HBillNo);   //写入txt文本
                                    oCn.Commit();
                                    return true;
                                }
                            }
                        }
                        else
                        {
                            sErrMsg = "校验审核采购入库单失败!金蝶云登录失败!";
                            oCn.RollBack();
                            return false;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                sErrMsg = "校验审核采购入库单失败!" + e.Message;
                oCn.RollBack();
                return false;
            }
        }
        //WMS   原单据非扫码生成    只生成WMS单据
        private bool set_SavePOStockInBill_WMS_BillCheck(Model.ClsKf_POStockInBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
        {
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            //上传前判断
            DataSet Ds = oCn.RunProcReturn("exec h_p_WMS_BeforeUpload_POStockInBillCheck_WMS " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + oMain.HBillType + "','" + oSystemParameterMain.WMS_WMSStockCtl_ERPMode + "'", "h_p_WMS_BeforeUpload_POStockInBillCheck_WMS");
            if (Ds == null || Ds.Tables[0].Rows.Count == 0)
            {
                sErrMsg = "校验上传前判断,发生错误!";
                return false;
            }
            else
            {
                if (DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0][0]) == 1)
                {
                    sErrMsg = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HRemark"]);
                    return false;
                }
            }
            try
            {
                oCn.BeginTran();
                //写入条码出入库表
                oCn.RunProc("EXEC h_p_Kf_ICStockBillSub_WMS_Insert_New " + oMain.HInterID.ToString() + ",'" + oMain.HBillType + "','" + oMain.HBillNo + "'");
                sErrMsg = "校验采购入库单成功!单据号为:" + oMain.HBillNo;
                LogService.Write("校验采购入库单成功!单据号为:" + oMain.HBillNo);   //写入txt文本
                oCn.Commit();
                return true;
            }
            catch (Exception e)
            {
                sErrMsg = "校验采购入库单失败!" + e.Message;
                oCn.RollBack();
                return false;
            }
        }
        #endregion
        #region 产品入库CLOUD   多源单
        //生成产品入库单   多源单
@@ -34745,6 +35203,340 @@
        #endregion
        #region 生产入库    校验模式*
        //校验生产入库单
        [WebMethod]
        public bool set_SaveProductInBill_BillCheck(Model.ClsKf_ProductInBillMain oMain, ref string sErrMsg)
        {
            //获取系统参数
            Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
            if (oSystemParameter.ShowBillByOrgID(oMain.HSTOCKORGID, ref sErrMsg) == false)
            {
                sErrMsg = "获取系统参数失败! " + sErrMsg;
                return false;
            }
            //WMS系统同步至ERP的类型(WISE、CLOUD、MES)
            if (oSystemParameter.omodel.Kf_ProductInBillCheck_ERPMode.ToUpper() == "WISE")
            {
                sErrMsg = "暂无此功能!";
                return false;
            }
            else if (oSystemParameter.omodel.Kf_ProductInBillCheck_ERPMode.ToUpper() == "CLOUD")
            {
                //原单据为扫码生成,对原扫描的条码进行核对
                if (oSystemParameter.omodel.Kf_ProductInBillCheck_SourceBarCodeCtl == "Y")
                {
                    sErrMsg = "暂不支持扫码生成单据的校验功能!";
                    return false;
                }
                //原单据非扫码生成
                else
                {
                    if (set_SaveProductInBill_CLD_BillCheck(oMain, oSystemParameter.omodel, ref sErrMsg) == true)
                    {
                        //上传成功
                        return true;
                    }
                    else
                    {
                        //上传失败
                        sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";上传单据失败!" + sErrMsg;
                        return false;
                    }
                }
            }
            else if (oSystemParameter.omodel.Kf_ProductInBillCheck_ERPMode.ToUpper() == "WMS")  //只生成WMS单据
            {
                //原单据为扫码生成,对原扫描的条码进行核对
                if (oSystemParameter.omodel.Kf_ProductInBillCheck_SourceBarCodeCtl == "Y")
                {
                    sErrMsg = "暂不支持扫码生成单据的校验功能!";
                    return false;
                }
                //原单据非扫码生成
                else
                {
                    if (set_SaveProductInBill_WMS_BillCheck(oMain, oSystemParameter.omodel, ref sErrMsg) == true)
                    {
                        //上传成功
                        return true;
                    }
                    else
                    {
                        //上传失败
                        sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";上传单据失败!" + sErrMsg;
                        return false;
                    }
                }
            }
            else
            {
                sErrMsg = "WMS系统同步至ERP的类型对应系统参数设置错误!";
                return false;
            }
        }
        //原单据非扫码生成
        public bool set_SaveProductInBill_CLD_BillCheck(Model.ClsKf_ProductInBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
        {
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            //上传前判断
            DataSet Ds = oCn.RunProcReturn("exec h_p_WMS_BeforeUpload_ProductInBillCheck " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + oMain.HBillType + "','" + oSystemParameterMain.Kf_ProductInBillCheck_MustQtyCtl + "'", "h_p_WMS_BeforeUpload_ProductInBillCheck");
            if (Ds == null || Ds.Tables[0].Rows.Count == 0)
            {
                sErrMsg = "校验上传前判断,发生错误!";
                return false;
            }
            else
            {
                if (DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0][0]) == 1)
                {
                    sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";" + DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HRemark"]);
                    return false;
                }
            }
            try
            {
                oCn.BeginTran();
                //写入条码出入库表
                oCn.RunProc("EXEC h_p_Kf_ICStockBillSub_WMS_Insert_New " + oMain.HInterID.ToString() + ",'" + oMain.HBillType + "','" + oMain.HBillNo + "'");
                //从配置文件获取 CLOUD网址、账套信息、登录用户、登录密码
                if (!Pub_Class.ClsPub.GetCLOUDLoginInfo(ref Pub_Class.ClsPub.sExeReturnInfo))
                {
                    sErrMsg = Pub_Class.ClsPub.sExeReturnInfo;
                    return false;
                }
                //获取CLOUD账号密码
                string sCLOUDUseName = Pub_Class.ClsPub.sCLOUDUseName;
                string sCLOUDPsd = Pub_Class.ClsPub.sCLOUDPsd;
                DataSet ds11 = get_SaveCLOUDUseNameandPsd(oMain.HInterID);
                if (ds11 == null || ds11.Tables[0].Rows.Count == 0)
                {
                }
                else
                {
                    sCLOUDUseName = DBUtility.ClsPub.isStrNull(ds11.Tables[0].Rows[0]["HCloudUserName"]);
                    sCLOUDPsd = DBUtility.ClsPub.isStrNull(ds11.Tables[0].Rows[0]["HCloudUserPsd"]);
                }
                if (oSystemParameterMain.Kf_ProductInBillCheck_MustQtyCtl == "完全等于应收")
                {
                    string HReturn;
                    ApiClient client = new ApiClient(Pub_Class.ClsPub.sCLOUDUrl);
                    string dbId = Pub_Class.ClsPub.sCLOUDAcc; //AotuTest117
                    bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
                    if (bLogin)
                    {
                        //提交单据
                        string sJson2 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
                        var result2 = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit",
                        new object[] { "PRD_INSTOCK", sJson2 });
                        //审核单据
                        string sJson3 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
                        var result3 = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit",
                        new object[] { "PRD_INSTOCK", sJson3 });
                        HReturn = result3.ToString();
                        if (HReturn.Contains("\"IsSuccess\":false") == true)
                        {
                            //反序列化json数据
                            var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                            //接收金蝶报错信息
                            var strErrorMsg = string.Empty;
                            //遍历获取报错信息
                            foreach (var item in retModel.Result.ResponseStatus.Errors)
                            {
                                strErrorMsg += item.Message + "\r\n";
                            };
                            sErrMsg = "校验审核生产入库单失败!" + strErrorMsg;
                            LogService.Write("校验审核生产入库单失败!" + HReturn);   //写入txt文本
                            oCn.RollBack();
                            return false;
                        }
                        else
                        {
                            sErrMsg = "审核生产入库单成功!单据号为:" + oMain.HBillNo;
                            LogService.Write("校验审核生产入库单成功!单据号为:" + oMain.HBillNo);   //写入txt文本
                            oCn.Commit();
                            return true;
                        }
                    }
                    else
                    {
                        sErrMsg = "校验审核生产入库单失败!金蝶云登录失败!";
                        oCn.RollBack();
                        return false;
                    }
                }
                else
                {
                    //根据TMP表 返回 修改信息
                    DataSet Ds2;
                    Ds2 = oCn.RunProcReturn("exec h_p_Kf_GetProductInBillCheck " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'", "h_p_Kf_GetProductInBillCheck");
                    if (Ds2 == null || Ds2.Tables[0].Rows.Count == 0 || Ds2.Tables[1].Rows.Count == 0)
                    {
                        sErrMsg = "获取子表信息失败!";
                        oCn.RollBack();
                        return false;
                    }
                    else
                    {
                        string sJson_Main = "{\"Creator\":\"\",\"NeedUpDateFields\":[\"FEntity\",\"FRealQty\"]," +
                            "\"NeedReturnFields\":[],\"IsDeleteEntry\":\"false\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\"," +
                            "\"IsEntryBatchFill\":\"True\",\"ValidateFlag\":\"True\",\"NumberSearch\":\"True\",\"InterationFlags\":\"\"," +
                            "\"Model\":{ \"FID\":\"" + Pub_Class.ClsPub.isStrNull(Ds2.Tables[0].Rows[0]["FID"]) + "\"," +
                            "\"FEntity\":[";
                        string sJson_Entry = "";
                        for (int i = 0; i < Ds2.Tables[1].Rows.Count; i++)
                        {
                            if (sJson_Entry != "")
                            {
                                sJson_Entry = sJson_Entry + " , ";
                            }
                            sJson_Entry = sJson_Entry + "{" +
                            "\"FEntryID\":\"" + Pub_Class.ClsPub.isStrNull(Ds2.Tables[1].Rows[i]["FEntryID"]) + "\"," +
                            "\"FRealQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds2.Tables[1].Rows[i]["FRealQty"]) + "\" " +
                            "}";
                        }
                        string sJson_End = "  ]  }}";
                        string sJson = sJson_Main + sJson_Entry + sJson_End;
                        //验证用户信息
                        string HReturn;
                        ApiClient client = new ApiClient(Pub_Class.ClsPub.sCLOUDUrl);
                        string dbId = Pub_Class.ClsPub.sCLOUDAcc; //AotuTest117
                        bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
                        if (bLogin)
                        {
                            //修改单据
                            var result = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save",
                            new object[] { "PRD_INSTOCK", sJson });
                            HReturn = result.ToString();
                            if (HReturn.Contains("\"IsSuccess\":false") == true)
                            {
                                //反序列化json数据
                                var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                                //接收金蝶报错信息
                                var strErrorMsg = string.Empty;
                                //遍历获取报错信息
                                foreach (var item in retModel.Result.ResponseStatus.Errors)
                                {
                                    strErrorMsg += item.Message + "\r\n";
                                };
                                sErrMsg = "校验修改生产入库单失败!" + strErrorMsg;
                                LogService.Write("校验修改生产入库单失败!" + HReturn + sJson);   //写入txt文本
                                oCn.RollBack();
                                return false;
                            }
                            else
                            {
                                HReturn = "";
                                //提交单据
                                string sJson2 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
                                var result2 = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit",
                                new object[] { "PRD_INSTOCK", sJson2 });
                                //审核单据
                                string sJson3 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
                                var result3 = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit",
                                new object[] { "PRD_INSTOCK", sJson3 });
                                HReturn = result3.ToString();
                                if (HReturn.Contains("\"IsSuccess\":false") == true)
                                {
                                    //反序列化json数据
                                    var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                                    //接收金蝶报错信息
                                    var strErrorMsg = string.Empty;
                                    //遍历获取报错信息
                                    foreach (var item in retModel.Result.ResponseStatus.Errors)
                                    {
                                        strErrorMsg += item.Message + "\r\n";
                                    };
                                    sErrMsg = "校验审核生产入库单失败!" + strErrorMsg;
                                    LogService.Write("校验审核生产入库单失败!" + HReturn + sJson);   //写入txt文本
                                    oCn.RollBack();
                                    return false;
                                }
                                else
                                {
                                    //重新同步生产入库单
                                    oCn.RunProc("exec h_p_IFCLD_ERPSourceBillToLocal_ProductIn '" + oMain.HBillNo + "'");
                                    sErrMsg = "修改并审核生产入库单成功!单据号为:" + oMain.HBillNo;
                                    LogService.Write("校验修改并审核生产入库单成功!单据号为:" + oMain.HBillNo);   //写入txt文本
                                    oCn.Commit();
                                    return true;
                                }
                            }
                        }
                        else
                        {
                            sErrMsg = "校验审核生产入库单失败!金蝶云登录失败!";
                            oCn.RollBack();
                            return false;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                sErrMsg = "校验审核生产入库单失败!" + e.Message;
                oCn.RollBack();
                return false;
            }
        }
        //WMS   原单据非扫码生成    只生成WMS单据
        private bool set_SaveProductInBill_WMS_BillCheck(Model.ClsKf_ProductInBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
        {
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            //上传前判断
            DataSet Ds = oCn.RunProcReturn("exec h_p_WMS_BeforeUpload_ProductInBillCheck_WMS " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + oMain.HBillType + "','" + oSystemParameterMain.WMS_WMSStockCtl_ERPMode + "'", "h_p_WMS_BeforeUpload_ProductInBillCheck_WMS");
            if (Ds == null || Ds.Tables[0].Rows.Count == 0)
            {
                sErrMsg = "校验上传前判断,发生错误!";
                return false;
            }
            else
            {
                if (DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0][0]) == 1)
                {
                    sErrMsg = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HRemark"]);
                    return false;
                }
            }
            try
            {
                oCn.BeginTran();
                //写入条码出入库表
                oCn.RunProc("EXEC h_p_Kf_ICStockBillSub_WMS_Insert_New " + oMain.HInterID.ToString() + ",'" + oMain.HBillType + "','" + oMain.HBillNo + "'");
                sErrMsg = "校验生产入库单成功!单据号为:" + oMain.HBillNo;
                LogService.Write("校验生产入库单成功!单据号为:" + oMain.HBillNo);   //写入txt文本
                oCn.Commit();
                return true;
            }
            catch (Exception e)
            {
                sErrMsg = "校验生产入库单失败!" + e.Message;
                oCn.RollBack();
                return false;
            }
        }
        #endregion
        #region 委外退库    委外入库(红字)   *旧
        //生成委外退库单