增加森楷其他入库、直接调拨扫码处理方法;增加森楷桌面自动更新调用
3个文件已修改
546 ■■■■■ 已修改文件
CLOUDWEB/WebService1.asmx.cs 546 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DLL/DAL.dll 补丁 | 查看 | 原始文档 | blame | 历史
DLL/Model.dll 补丁 | 查看 | 原始文档 | blame | 历史
CLOUDWEB/WebService1.asmx.cs
@@ -30548,6 +30548,26 @@
                        return false;
                    }
                }
                else if (oSystemParameter.omodel.WMS_CampanyName == "森楷")
                {
                    SqlConnection ocn = new SqlConnection(@"Data Source=192.168.10.66;DataBase=master;User ID=HX_USER;PWD=lc@841022;max pool size=32767");//森楷
                    ocn.Open();
                    SqlCommand cm = new SqlCommand(sSQL, ocn);
                    cm.CommandTimeout = 600;
                    SqlDataReader dr = cm.ExecuteReader();
                    //byte[] oFile = null;
                    if (dr.Read())
                    {
                        FileItem = (byte[])dr["FFile"];
                        return true;
                    }
                    else
                    {
                        FileItem = null;
                        sSQL = "";
                        return false;
                    }
                }
                else
                {
                    FileItem = null;
@@ -34199,6 +34219,49 @@
                    }
                    return oBar;
                }
                //其他入库  森楷专用
                else if (HBillType == "1203" && oSystemParameter.omodel.WMS_CampanyName == "森楷") //系统参数  客户定制化名称     空白为通用
                {
                    //根据单个条码获取对应整托条码信息写入条码出入库临时表
                    string sBarCode_New;
                    DataSet dsTBarCode = oCn.RunProcReturn("exec h_p_WMS_BeforeCheckToBarCode '" + sBarCode + "'", "h_p_WMS_BeforeCheckToBarCode");
                    if (dsTBarCode == null || dsTBarCode.Tables[0].Rows.Count == 0)
                    {
                        sErrMsg = "获取整托条码信息发生错误!";
                        return null;
                    }
                    else
                    {
                        if (DBUtility.ClsPub.isLong(dsTBarCode.Tables[0].Rows[0][0]) == 1)
                        {
                            sErrMsg = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[0]["HRemark"]);
                            return null;
                        }
                        else
                        {
                            for (int i = 0; i < dsTBarCode.Tables[0].Rows.Count; i++)
                            {
                                sBarCode_New = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[i]["HBarCode"]);
                                if (set_SavePonderationBillMain_Temp_BarCode(sBarCode_New, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HQty, HRedBlueFlag, SourceFlag, HSourceBillNo, HSourceBillType, HOWNERID, HExpressNumber, ref sHSourceBillNo, ref sHSourceBillType, ref sHSupID, ref sHSupName, ref sHDeptID, ref sHDeptName, ref sErrMsg))
                                {
                                    oBar.HSourceBillType = sHSourceBillType;
                                    oBar.HSourceBillNo = sHSourceBillNo;
                                    oBar.HSupID = sHSupID;
                                    oBar.HSupName = sHSupName;
                                    oBar.HDeptID = sHDeptID;
                                    oBar.HDeptName = sHDeptName;
                                    SourceFlag = true;
                                }
                                else
                                {
                                    sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描失败!" + sBarCode_New + sErrMsg;
                                    return null;
                                }
                            }
                        }
                        return oBar;
                    }
                }
                //生产入库  多源单模式
                else if (HBillType == "1202" && oSystemParameter.omodel.Kf_ProductInBill_MulSourceBill == "Y")
                {
@@ -35779,6 +35842,489 @@
        #endregion
        #region 物料条码调用方法
        #region 扫描物料条码      调拨
        [WebMethod]
        public Model.ClsKf_ICStockBill_WMS get_BarCode_MoveStock(string sBarCode, Int64 HBillID, string HBillType, string HBillNo, string HMaker, Int64 HWhID, Int64 HSPID, Int64 HSCWHID, Int64 HSCSPID, Double HQty, bool SourceFlag, string HSourceBillNo, string HSourceBillType, Int64 HStockInOrgID, Int64 HStockOutOrgID, string HScanStyle, ref string sErrMsg)
        {
            try
            {
                //获取系统参数
                Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
                if (oSystemParameter.ShowBill(ref sErrMsg) == false)
                {
                    sErrMsg = "获取系统参数失败! " + sErrMsg;
                    return null;
                }
                sBarCode = sBarCode.Trim();
                if (sBarCode == "")
                {
                    sErrMsg = "条码不能为空,请扫描条码!";
                    return null;
                }
                else
                {
                    //判断条码是否含特殊符号 # ,如果含有则 拆分
                    string[] NewBarCode;
                    if (sBarCode.CompareTo("#") > 0)
                    {
                        NewBarCode = sBarCode.Split(Convert.ToChar("#"));
                        sBarCode = NewBarCode[0];
                    }
                }
                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                Model.ClsKf_ICStockBill_WMS oBar = new Model.ClsKf_ICStockBill_WMS();
                DAL.ClsGy_BarCodeBill_View dal = new DAL.ClsGy_BarCodeBill_View();
                string sBarCodePrefix = sBarCode.Substring(0, Math.Min(3, sBarCode.Length));//截取条码前三位字符串
                if (sBarCodePrefix == "PAK")
                {
                    bool HRedBlueFlag = false;
                    //将模治具信息写入模治具出入库临时表
                    DataSet Mould = oCn.RunProcReturn("exec h_p_WMS_AddMouldBarCode_New '" + sBarCode + "'," + HBillID.ToString() + ",'" + HBillNo + "','" + HBillType + "'," + HWhID.ToString() + "," + HSPID.ToString() + "," + HSCWHID.ToString() + "," + HSCSPID.ToString() + ",'" + HSourceBillNo + "','" + HSourceBillType + "','" + HRedBlueFlag + "','" + HMaker + "'," + HStockOutOrgID.ToString(), "h_p_WMS_AddMouldBarCode_New");
                    if (Mould == null || Mould.Tables[0].Rows.Count == 0)
                    {
                        sErrMsg = "将模治具信息写入模治具出入库临时表失败!";
                        return null;
                    }
                    else
                    {
                        if (DBUtility.ClsPub.isLong(Mould.Tables[0].Rows[0][0]) == 0)
                        {
                            oBar.HBarType = "模治具条码";
                            return oBar;
                        }
                        else
                        {
                            sErrMsg = DBUtility.ClsPub.isStrNull(Mould.Tables[0].Rows[0]["HRemark"]);
                            return null;
                        }
                    }
                }
                else
                {
                    if (dal.GetInfoByBarCode_View(sBarCode))
                    {
                        if (dal.omodel_View.HStopflag)
                        {
                            sErrMsg = "条码已被禁用,不允许扫描!";
                            return null;
                        }
                        else
                        {
                            //森楷专用
                            if (oSystemParameter.omodel.WMS_CampanyName == "森楷") //系统参数  客户定制化名称     空白为通用
                            {
                                //根据单个条码获取对应整托条码信息写入条码出入库临时表
                                if(dal.omodel_View.HBarCodeType == "")
                                {
                                    //将物料条码信息写入条码出入库临时表
                                    if (!set_SavePonderationBillMain_Temp_BarCode_MoveStock(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HSCWHID, HSCSPID, HQty, SourceFlag, HSourceBillType, HStockInOrgID, HStockOutOrgID, oSystemParameter.omodel, ref sErrMsg))
                                    {
                                        sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描物料条码失败!" + sErrMsg;
                                        return null;
                                    }
                                    return oBar;
                                }
                                else
                                {
                                    DataSet dsTBarCode = oCn.RunProcReturn("select HBarCode,HBarCodeType,HMaterID,HAuxPropID,HBatchNo,HQty,HMTONo from Gy_BarCodeBill with(nolock) where HStopflag=0 and HOutStockCounts=0 and HBarCode_Pack= '" + dal.omodel_View.HBarCode_Pack + "'", "Gy_BarCodeBill");
                                    if (dsTBarCode == null || dsTBarCode.Tables[0].Rows.Count == 0)
                                    {
                                        sErrMsg = "获取整托条码信息发生错误!";
                                        return null;
                                    }
                                    else
                                    {
                                        for (int i = 0; i < dsTBarCode.Tables[0].Rows.Count; i++)
                                        {
                                            dal.omodel_View.HBarCode = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[i]["HBarCode"]);
                                            dal.omodel_View.HBarCodeType = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[i]["HBarCodeType"]);
                                            dal.omodel_View.HMaterID = DBUtility.ClsPub.isLong(dsTBarCode.Tables[0].Rows[i]["HMaterID"]);
                                            dal.omodel_View.HAuxPropID = DBUtility.ClsPub.isLong(dsTBarCode.Tables[0].Rows[i]["HAuxPropID"]);
                                            dal.omodel_View.HBatchNo = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[i]["HBatchNo"]);
                                            dal.omodel_View.HQty = DBUtility.ClsPub.isDoule(dsTBarCode.Tables[0].Rows[i]["HQty"]);
                                            dal.omodel_View.HMTONo = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[i]["HMTONo"]);
                                            //无源单状态,设置源单类型为-1
                                            if (SourceFlag == false)
                                            {
                                                HSourceBillType = "-1";
                                            }
                                            if (i!=0)
                                            {
                                                SourceFlag = true;
                                            }
                                            //将物料条码信息写入条码出入库临时表
                                            if (!set_SavePonderationBillMain_Temp_BarCode_MoveStock(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HSCWHID, HSCSPID, HQty, SourceFlag, HSourceBillType, HStockInOrgID, HStockOutOrgID, oSystemParameter.omodel, ref sErrMsg))
                                            {
                                                sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描物料条码失败!" + sErrMsg;
                                                return null;
                                            }
                                        }
                                        return oBar;
                                    }
                                }
                            }
                            else
                            {
                                //判断条码类型是否为托盘条码,如果是托盘条码则分解并模拟扫码
                                if (dal.omodel_View.HBarCodeType == "托盘条码")
                                {
                                    //分解托盘条码得到明细条码信息写入条码出入库临时表
                                    DataSet dsTBarCode = oCn.RunProcReturn("exec h_p_WMS_BeforeCheckToTPBarCode '" + sBarCode + "'", "h_p_WMS_BeforeCheckToTPBarCode");
                                    if (dsTBarCode == null || dsTBarCode.Tables[0].Rows.Count == 0)
                                    {
                                        sErrMsg = "分解托盘条码发生错误!";
                                        return null;
                                    }
                                    else
                                    {
                                        if (DBUtility.ClsPub.isLong(dsTBarCode.Tables[0].Rows[0][0]) == 1)
                                        {
                                            sErrMsg = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[0]["HRemark"]);
                                            return null;
                                        }
                                        else
                                        {
                                            for (int i = 0; i < dsTBarCode.Tables[0].Rows.Count; i++)
                                            {
                                                dal.omodel_View.HBarCode = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[i]["HBarCode"]);
                                                dal.omodel_View.HBarCodeType = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[i]["HBarCodeType"]);
                                                dal.omodel_View.HMaterID = DBUtility.ClsPub.isLong(dsTBarCode.Tables[0].Rows[i]["HMaterID"]);
                                                dal.omodel_View.HAuxPropID = DBUtility.ClsPub.isLong(dsTBarCode.Tables[0].Rows[i]["HAuxPropID"]);
                                                dal.omodel_View.HBatchNo = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[i]["HBatchNo"]);
                                                dal.omodel_View.HQty = DBUtility.ClsPub.isDoule(dsTBarCode.Tables[0].Rows[i]["HQty"]);
                                                dal.omodel_View.HSourceInterID = DBUtility.ClsPub.isLong(dsTBarCode.Tables[0].Rows[i]["HSourceInterID"]);
                                                dal.omodel_View.HSourceEntryID = DBUtility.ClsPub.isLong(dsTBarCode.Tables[0].Rows[i]["HSourceEntryID"]);
                                                dal.omodel_View.HSourceBillNo = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[i]["HSourceBillNo"]);
                                                dal.omodel_View.HMTONo = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[i]["HMTONo"]);
                                                //无源单状态,设置源单类型为-1
                                                if (SourceFlag == false)
                                                {
                                                    HSourceBillType = "-1";
                                                }
                                                if (i != 0)
                                                {
                                                    SourceFlag = true;
                                                }
                                                //将物料条码信息写入条码出入库临时表
                                                if (!set_SavePonderationBillMain_Temp_BarCode_MoveStock(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HSCWHID, HSCSPID, HQty, SourceFlag, HSourceBillType, HStockInOrgID, HStockOutOrgID, oSystemParameter.omodel, ref sErrMsg))
                                                {
                                                    sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描物料条码失败!" + sErrMsg;
                                                    return null;
                                                }
                                            }
                                        }
                                        return oBar;
                                    }
                                }
                                else
                                //条码类型不为托盘条码
                                {
                                    //将物料条码信息写入条码出入库临时表
                                    if (!set_SavePonderationBillMain_Temp_BarCode_MoveStock(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HSCWHID, HSCSPID, HQty, SourceFlag, HSourceBillType, HStockInOrgID, HStockOutOrgID, oSystemParameter.omodel, ref sErrMsg))
                                    {
                                        sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描物料条码失败!" + sErrMsg;
                                        return null;
                                    }
                                    return oBar;
                                }
                            }
                        }
                    }
                    else
                    {
                        sErrMsg = "条码档案中不存在该条码,请确认条码是否正确或是否已被删除!";
                        return null;
                    }
                }
            }
            catch (Exception e)
            {
                sErrMsg = e.Message + ";" + e.StackTrace;
                return null;
            }
        }
        //扫描物料条码  存入条码出入库临时表      调拨
        [WebMethod]
        public bool set_SavePonderationBillMain_Temp_BarCode_MoveStock(Model.ClsGy_BarCodeBill_WMS_Model_View omodel_View, Int64 HBillID, string HBillType, string HBillNo, string HMaker, Int64 HWhID, Int64 HSPID, Int64 HSCWHID, Int64 HSCSPID, Double HQty, bool SourceFlag, string HSourceBillType, Int64 HStockInOrgID, Int64 HStockOutOrgID, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
        {
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            DAL.ClsKF_PonderationBillMain_Temp_Ctl tem = new DAL.ClsKF_PonderationBillMain_Temp_Ctl();
            Model.ClsKF_PonderationBillMain_Temp oMain = new Model.ClsKF_PonderationBillMain_Temp();
            //判断调入仓库、仓位是否有效
            if (HWhID == 0)
            {
                sErrMsg = "调入仓库没有选择!";
                return false;
            }
            else
            {
                //根据仓库ID,判断是否启用仓位
                DataSet dsWh = oCn.RunProcReturn(" select HSPFlag from Gy_Warehouse with(nolock) where HItemID= " + HWhID.ToString() + " and HUSEORGID= " + HStockInOrgID.ToString(), "Gy_Warehouse");
                if (dsWh == null || dsWh.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "所选调入仓库不属于该调入组织!";
                    return false;
                }
                else if (HSPID == 0 && DBUtility.ClsPub.isBool(dsWh.Tables[0].Rows[0]["HSPFlag"]) == true)
                {
                    sErrMsg = "调入仓位没有选择!";
                    return false;
                }
            }
            //1、首次扫码防串单判断; 2、源单类型是否在源单列表里判断;3、唯一条码是否存在相同条码判断; 4、有源单,物料是否在源单中判断
            DataSet ds1 = oCn.RunProcReturn("exec h_p_WMS_AddBarCode_MoveStock '" + omodel_View.HBarCode + "'," + HBillID.ToString() + ",'" + HBillNo + "','" + HBillType + "','" + HSourceBillType + "'," + DBUtility.ClsPub.BoolToString(SourceFlag), "h_p_WMS_AddBarCode_MoveStock");
            if (ds1 == null || ds1.Tables[0].Rows.Count == 0)
            {
                sErrMsg = "判断所扫条码是否在单据中发生错误!";
                return false;
            }
            else
            {
                if (DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0][0]) == 0)
                {
                    omodel_View.HMaterID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["HMaterID"]);
                    omodel_View.HSourceBillNo = DBUtility.ClsPub.isStrNull(ds1.Tables[0].Rows[0]["HSourceBillNo"]);
                    omodel_View.HSourceEntryID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["HSourceEntryID"]);
                    omodel_View.HSourceInterID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["HSourceInterID"]);
                    omodel_View.HSourceQty = DBUtility.ClsPub.isDoule(ds1.Tables[0].Rows[0]["HQtyMust"]);     //源单可扫数量
                }
                else
                {
                    sErrMsg = DBUtility.ClsPub.isStrNull(ds1.Tables[0].Rows[0]["HRemark"]);
                    return false;
                }
            }
            double sRelQty = 0;
            //获取扫码数量
            if (omodel_View.HBarCodeType == "唯一条码")
            {
                if (HQty > 0 && omodel_View.HQty > HQty)
                {
                    sRelQty = HQty;
                }
                else
                {
                    sRelQty = omodel_View.HQty;
                }
                //直接调拨 有源单扫码,根据系统参数:直接调拨-应收数量 控制扫码数量能否可超单据数量(小于等于应收、完全等于应收、不控制)
                if (HBillType == "1207" && omodel_View.HSourceInterID != 0
                    && (oSystemParameterMain.Kf_MoveStockBill_MustQtyCtl == "小于等于应收" || oSystemParameterMain.Kf_MoveStockBill_MustQtyCtl == "完全等于应收"))
                {
                    if (omodel_View.HSourceQty == 0)
                    {
                        sErrMsg = "所扫物料在单据中剩余可扫数量为0,不允许扫码!";
                        return false;
                    }
                    else if (sRelQty > omodel_View.HSourceQty)
                    {
                        sErrMsg = "所扫描条码数量为 " + sRelQty.ToString() + " 大于对应源单剩余可扫描数量" + omodel_View.HSourceQty.ToString() + ",不允许扫码!";
                        return false;
                    }
                }
            }
            else
            //批次条码、品种条码
            {
                if (HQty > 0)
                {
                    sRelQty = HQty;
                }
                else if (omodel_View.HSourceQty > 0)
                {
                    sRelQty = omodel_View.HSourceQty;
                }
                else
                {
                    sRelQty = omodel_View.HQty;
                }
                //直接调拨 有源单扫码,根据系统参数:直接调拨校验-应收数量 控制扫码数量能否可超单据数量(小于等于应收、完全等于应收、不控制)
                if (HBillType == "1207" && omodel_View.HSourceInterID != 0
                    && (oSystemParameterMain.Kf_MoveStockBill_MustQtyCtl == "小于等于应收" || oSystemParameterMain.Kf_MoveStockBill_MustQtyCtl == "完全等于应收"))
                {
                    if (omodel_View.HSourceQty == 0)
                    {
                        sErrMsg = "所扫物料在单据中剩余可扫数量为0,不允许扫码!";
                        return false;
                    }
                    else if (sRelQty > omodel_View.HSourceQty)
                    {
                        sErrMsg = "所扫描条码数量为 " + sRelQty.ToString() + " 大于对应源单剩余可扫描数量" + omodel_View.HSourceQty.ToString() + ",不允许扫码!";
                        return false;
                    }
                }
            }
            double sWMSQty = 0;     //条码库存数量
            double sERPQty = 0;     //ERP库存数量
            if (omodel_View.HBarCodeType == "唯一条码")
            {
                //判断条码库存    库存控制-WMS负库存控制
                if (oSystemParameterMain.WMS_WMSStockCtl == "Y")
                {
                    //判断ERP库存   返回ERP库存数量
                    DataSet DsWMS = oCn.RunProcReturn("exec h_p_KF_ICInventory_WMS_GetWHAndSP " + HBillID.ToString() + ",'" + HBillType + "','" + omodel_View.HBarCode + "'," + HSCWHID.ToString() + "," + HSCSPID.ToString(), "h_p_KF_ICInventory_WMS_GetWHAndSP");
                    if (DsWMS == null || DsWMS.Tables[0].Rows.Count == 0)
                    {
                        sErrMsg = "判断WMS条码库存,发生错误!";
                        return false;
                    }
                    else
                    {
                        HSCWHID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["HWhID"]);
                        HSCSPID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["HSPID"]);
                        sWMSQty = DBUtility.ClsPub.isDoule(DsWMS.Tables[0].Rows[0]["HKFQty"]);
                        //判断扫描条码数量与条码库存数量
                        if (sRelQty > sWMSQty)
                        {
                            sRelQty = sWMSQty;
                        }
                    }
                }
            }
            //判断调出仓库、仓位是否有效
            if (HSCWHID == 0)
            {
                sErrMsg = "调出仓库没有选择!";
                return false;
            }
            else
            {
                //根据仓库ID,判断是否启用仓位
                DataSet dsSCWH = oCn.RunProcReturn(" select HSPFlag from Gy_Warehouse with(nolock) where HItemID= " + HSCWHID.ToString() + " and HUSEORGID= " + HStockOutOrgID.ToString(), "Gy_Warehouse");
                if (dsSCWH == null || dsSCWH.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "所选调出仓库不属于该调出组织!";
                    return false;
                }
                else if (HSCSPID == 0 && DBUtility.ClsPub.isBool(dsSCWH.Tables[0].Rows[0]["HSPFlag"]) == true)
                {
                    sErrMsg = "调出仓位没有选择!";
                    return false;
                }
            }
            //判断ERP库存   库存控制-ERP负库存控制
            if (oSystemParameterMain.WMS_ERPStockCtl == "Y")
            {
                //判断ERP库存   返回ERP库存数量
                DataSet DsERP = oCn.RunProcReturn("exec h_p_IF_CheckQtyByERPICInventory " + HBillID.ToString() + ",'" + HBillType + "','" + omodel_View.HBarCode + "'," + HSCWHID.ToString() + "," + HSCSPID.ToString() + "," + omodel_View.HMaterID.ToString() + "," + omodel_View.HAuxPropID.ToString() + ",'" + omodel_View.HBatchNo + "'," + sRelQty.ToString() + "," + HStockOutOrgID.ToString(), "h_p_IF_CheckQtyByERPICInventory");
                if (DsERP == null || DsERP.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "判断ERP库存,发生错误!";
                    return false;
                }
                else
                {
                    if (DBUtility.ClsPub.isLong(DsERP.Tables[0].Rows[0][0]) == 0)
                    {
                        sERPQty = DBUtility.ClsPub.isDoule(DsERP.Tables[0].Rows[0]["HQty"]);
                        sRelQty = sERPQty;
                    }
                    else
                    {
                        sErrMsg = DBUtility.ClsPub.isStrNull(DsERP.Tables[0].Rows[0]["HRemark"]);
                        return false;
                    }
                }
            }
            if (sRelQty == 0)
            {
                sErrMsg = "所扫描条码无条码库存或对应物料无ERP库存!";
                return false;
            }
            if(HWhID ==HSCWHID && HSPID == HSCSPID)
            {
                sErrMsg = "调入仓库、仓位不能与调出仓库、仓位相同!";
                return false;
            }
            string sBillTypeOneScan = "";   //是否启用一次扫码控制('Y'为启用)
            if (HBillType == "1207" && oSystemParameterMain.Kf_MoveStockBill_BillTypeOneScan == "Y")
            {
                //直接调拨单
                sBillTypeOneScan = "Y";
            }
            if (sBillTypeOneScan == "Y")
            {
                //一次扫码控制,同一条码、同一单据类型,在WMS表和TEMP表里,只允许进行一次扫码
                DataSet ds = oCn.RunProcReturn("exec h_p_WMS_CheckBarCodeOneScan " + HBillID.ToString() + ",'" + omodel_View.HBarCode + "','" + HBillType + "'," + HWhID.ToString() + "," + HSPID.ToString() + "," + HSCWHID.ToString() + "," + HSCSPID.ToString() + ",'" + HMaker + "'", "h_p_WMS_CheckBarCodeOneScan");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                }
                else
                {
                    if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0][0]) == 1)
                    {
                        sErrMsg = "对不起,您扫描的条形码已被扫描过,不符合一次扫码系统参数的要求!";
                        return false;
                    }
                }
            }
            oMain.HInterID = HBillID;
            oMain.HBillNo = HBillNo;
            oMain.HBillType = HBillType;
            oMain.HMaker = HMaker;
            oMain.HMaterID = omodel_View.HMaterID;
            oMain.HAuxPropID = omodel_View.HAuxPropID;
            oMain.HQty = sRelQty;
            oMain.HQtyMust = 0;
            oMain.HBarCode = omodel_View.HBarCode;
            oMain.HBatchNo = omodel_View.HBatchNo;
            oMain.HMTONo = omodel_View.HMTONo;
            oMain.HWhID = HWhID;
            oMain.HStockPlaceID = HSPID;
            oMain.HSCWHID = HSCWHID;
            oMain.HOutStockPlaceID = HSCSPID;
            oMain.HSourceInterID = omodel_View.HSourceInterID;
            oMain.HSourceEntryID = omodel_View.HSourceEntryID;
            oMain.HSourceBillNo = omodel_View.HSourceBillNo;
            oMain.HSourceBillType = HSourceBillType;
            oMain.HRedBlueFlag = false;
            oMain.HPieceQty = 1;
            oMain.HSTOCKORGID = HStockOutOrgID;
            oMain.HOWNERID = HStockInOrgID;
            oCn.RunProc("Insert into KF_PonderationBillMain_Temp " +
                "(HInterID,HBillNo,HBillType,HMaterID,HAuxPropID,HProcID" +
                ",HWhID,HSCWHID,HStockPlaceID,HOutStockPlaceID,HGroupID,HAddr" +
                ",HQtyMust,HQty,HPieceQty,HBatchNo,HBarCode,HBarCode_Pack" +
                ",HMaker,HMakeDate,HSourceInterID,HSourceEntryID,HSourceBillType,HSourceBillNo" +
                ",HRelationInterID,HRelationEntryID,HRelationBillNo,HRedBlueFlag,HMTONo,HPlanMode" +
                ",HSTOCKORGID,HOtherOrgID,HOWNERID,HOWNERTYPEID,HExpressNumber,HSubBillType" +
                ",HCusID,HDeptID,HCusBarCode,HMulSourceBill) " +
                " Values(" + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + oMain.HBillType + "'," + oMain.HMaterID.ToString() + "," + oMain.HAuxPropID.ToString() + "," + oMain.HProcID.ToString() +
                "," + oMain.HWhID.ToString() + "," + oMain.HSCWHID.ToString() + "," + oMain.HStockPlaceID.ToString() + "," + oMain.HOutStockPlaceID.ToString() + "," + oMain.HGroupID.ToString() + ",'" + oMain.HAddr + "'" +
                "," + oMain.HQtyMust.ToString() + "," + oMain.HQty.ToString() + "," + oMain.HPieceQty.ToString() + ",'" + oMain.HBatchNo + "','" + oMain.HBarCode + "',''" +
                ",'" + oMain.HMaker + "',getdate()," + oMain.HSourceInterID.ToString() + "," + oMain.HSourceEntryID.ToString() + ",'" + oMain.HSourceBillType + "','" + oMain.HSourceBillNo + "'" +
                "," + oMain.HRelationInterID.ToString() + "," + oMain.HRelationEntryID.ToString() + ",'" + oMain.HRelationBillNo + "'," + Convert.ToString(oMain.HRedBlueFlag ? 1 : 0) + ",'" + oMain.HMTONo + "',0" +
                "," + oMain.HSTOCKORGID.ToString() + "," + oMain.HOWNERID.ToString() + "," + oMain.HSTOCKORGID.ToString() + ",'','',0" +
                ",0,0,'" + oMain.HCusBarCode + "',0)");
            return true;
        }
        #endregion
        #endregion
        //        #region 扫描物料条码调用方法
        //        #region 扫描物料条码
DLL/DAL.dll
Binary files differ
DLL/Model.dll
Binary files differ