yxj
3 天以前 02fe5a6dce0da96d3e0a750e8768be8e70a4b720
校验扫码模块相关调用方法优化,新增先进先出功能等
2个文件已修改
813 ■■■■■ 已修改文件
CLOUDWEB/WebService1.asmx.cs 813 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DLL/Pub_Class.dll 补丁 | 查看 | 原始文档 | blame | 历史
CLOUDWEB/WebService1.asmx.cs
@@ -64923,7 +64923,7 @@
        #endregion
        #region 扫描单据条码      *校验模式
        #region 扫描单据条码      *校验模式   20251225
        [WebMethod]
        public Model.ClsKf_ICStockBill_WMS get_BillBarCode_BillCheck(string HBillNo, string HBillType, string HMaker, Int64 HOWNERID, ref string sErrMsg)
@@ -64941,7 +64941,11 @@
            string sAutoBarCode = "N";          //免扫物料条码模式('Y'为不扫物料条码)
            string sSourceBarCodeCtl = "N";     //校验-是否进行源单对应条码核对('Y'为核对)
            string sWHSPCtl = "Y";              //校验-是否校对仓库仓位('Y'为校对)
            string sWHCtl = "Y";                //校验-是否校对仓库('Y'为校对)
            string sERPMode = "CLOUD";          //WMS系统同步至ERP的类型(WISE、CLOUD、WMS)
            string sFIFOMode = oSystemParameter.omodel.WMS_FIFOMode;    //先进先出库存取值模式(WMS、CLOUD)
            string sStockPlaceAutoCtl = "Y";    //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
            string sFIFOCtl = "4";              //先进先出控制(1、不控制仅显示下架清单 2、严格控制先进先出 3、仅提示和显示下架清单 4、不显示下架清单也不控制)
            #region 系统参数获取
            //采购入库单
@@ -64951,6 +64955,11 @@
                if (oSystemParameter.omodel.Kf_POStockInBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameter.omodel.Kf_POStockInBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-是否进行源单对应条码核对('Y'为核对)
                if (oSystemParameter.omodel.Kf_POStockInBillCheck_SourceBarCodeCtl.ToUpper() == "Y")
@@ -64975,6 +64984,11 @@
                {
                    sERPMode = "CLOUD";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameter.omodel.Kf_POStockInBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameter.omodel.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
            }
            //生产入库单
            else if (HBillType == "1202")
@@ -64983,6 +64997,11 @@
                if (oSystemParameter.omodel.Kf_ProductInBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameter.omodel.Kf_ProductInBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-是否进行源单对应条码核对('Y'为核对)
                if (oSystemParameter.omodel.Kf_ProductInBillCheck_SourceBarCodeCtl.ToUpper() == "Y")
@@ -65007,6 +65026,11 @@
                {
                    sERPMode = "CLOUD";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameter.omodel.Kf_ProductInBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameter.omodel.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
            }
            //其他入库单
            else if (HBillType == "1203")
@@ -65015,6 +65039,11 @@
                if (oSystemParameter.omodel.Kf_OtherInBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameter.omodel.Kf_OtherInBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-是否进行源单对应条码核对('Y'为核对)
                if (oSystemParameter.omodel.Kf_OtherInBillCheck_SourceBarCodeCtl.ToUpper() == "Y")
@@ -65039,6 +65068,11 @@
                {
                    sERPMode = "CLOUD";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameter.omodel.Kf_OtherInBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameter.omodel.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
            }
            //领料出库单
            else if (HBillType == "1204")
@@ -65047,6 +65081,11 @@
                if (oSystemParameter.omodel.Kf_MateOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameter.omodel.Kf_MateOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-是否进行源单对应条码核对('Y'为核对)
                if (oSystemParameter.omodel.Kf_MateOutBillCheck_SourceBarCodeCtl.ToUpper() == "Y")
@@ -65071,6 +65110,13 @@
                {
                    sERPMode = "CLOUD";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameter.omodel.Kf_MateOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameter.omodel.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameter.omodel.Kf_MateOutBillCheck_FIFOCtl;
            }
            //销售出库单
            else if (HBillType == "1205")
@@ -65079,6 +65125,11 @@
                if (oSystemParameter.omodel.Kf_SellOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameter.omodel.Kf_SellOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-是否进行源单对应条码核对('Y'为核对)
                if (oSystemParameter.omodel.Kf_SellOutBillCheck_SourceBarCodeCtl.ToUpper() == "Y")
@@ -65103,6 +65154,13 @@
                {
                    sERPMode = "CLOUD";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameter.omodel.Kf_SellOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameter.omodel.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameter.omodel.Kf_SellOutBillCheck_FIFOCtl;
            }
            //其他出库单
            else if (HBillType == "1206")
@@ -65111,6 +65169,11 @@
                if (oSystemParameter.omodel.Kf_OtherOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameter.omodel.Kf_OtherOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-是否进行源单对应条码核对('Y'为核对)
                if (oSystemParameter.omodel.Kf_OtherOutBillCheck_SourceBarCodeCtl.ToUpper() == "Y")
@@ -65135,6 +65198,13 @@
                {
                    sERPMode = "CLOUD";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameter.omodel.Kf_OtherOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameter.omodel.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameter.omodel.Kf_OtherOutBillCheck_FIFOCtl;
            }
            //委外领料单
            else if (HBillType == "1211")
@@ -65143,6 +65213,11 @@
                if (oSystemParameter.omodel.Kf_EntrustOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameter.omodel.Kf_EntrustOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-是否进行源单对应条码核对('Y'为核对)
                if (oSystemParameter.omodel.Kf_EntrustOutBillCheck_SourceBarCodeCtl.ToUpper() == "Y")
@@ -65167,6 +65242,13 @@
                {
                    sERPMode = "CLOUD";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameter.omodel.Kf_EntrustOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameter.omodel.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameter.omodel.Kf_EntrustOutBillCheck_FIFOCtl;
            }
            //生产补料单
            else if (HBillType == "1254")
@@ -65175,6 +65257,11 @@
                if (oSystemParameter.omodel.Kf_MateReplenishOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameter.omodel.Kf_MateReplenishOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-是否进行源单对应条码核对('Y'为核对)
                if (oSystemParameter.omodel.Kf_MateReplenishOutBillCheck_SourceBarCodeCtl.ToUpper() == "Y")
@@ -65199,6 +65286,13 @@
                {
                    sERPMode = "CLOUD";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameter.omodel.Kf_MateReplenishOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameter.omodel.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameter.omodel.Kf_MateReplenishOutBillCheck_FIFOCtl;
            }
            //委外补料单
            else if (HBillType == "1255")
@@ -65207,6 +65301,11 @@
                if (oSystemParameter.omodel.Kf_EntrustReplenishOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameter.omodel.Kf_EntrustReplenishOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-是否进行源单对应条码核对('Y'为核对)
                if (oSystemParameter.omodel.Kf_EntrustReplenishOutBillCheck_SourceBarCodeCtl.ToUpper() == "Y")
@@ -65231,6 +65330,13 @@
                {
                    sERPMode = "CLOUD";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameter.omodel.Kf_EntrustReplenishOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameter.omodel.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameter.omodel.Kf_EntrustReplenishOutBillCheck_FIFOCtl;
            }
            //直接调拨单
            else if (HBillType == "1207")
@@ -65239,6 +65345,11 @@
                if (oSystemParameter.omodel.Kf_MoveStockBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameter.omodel.Kf_MoveStockBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-是否进行源单对应条码核对('Y'为核对)
                if (oSystemParameter.omodel.Kf_MoveStockBillCheck_SourceBarCodeCtl.ToUpper() == "Y")
@@ -65263,8 +65374,39 @@
                {
                    sERPMode = "CLOUD";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameter.omodel.Kf_MoveStockBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameter.omodel.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameter.omodel.Kf_MoveStockBillCheck_FIFOCtl;
            }
            //判断是否校对仓库仓位、是否校对仓库状态
            //(启用条码库存 或 启用先进先出)且 仓位数据从ERP中同步至本地
            if ((oSystemParameter.omodel.WMS_WMSStockCtl.ToUpper() == "Y" || (sFIFOCtl == "1" || sFIFOCtl == "2" || sFIFOCtl == "3")) && sStockPlaceAutoCtl == "Y")
            {
                sWHSPCtl = "Y";
            }
            //(启用条码库存 或 启用先进先出)且 仓位数据本地维护
            else if ((oSystemParameter.omodel.WMS_WMSStockCtl.ToUpper() == "Y" || (sFIFOCtl == "1" || sFIFOCtl == "2" || sFIFOCtl == "3")) && sStockPlaceAutoCtl == "N")
            {
                sWHCtl = "Y";
            }
            #endregion
            //重新同步源单信息
            if (oSystemParameter.omodel.WMS_CloudMode.ToUpper() == "N") //系统参数  是否为私有云模式(N为公有云模式,Y为私有云模式)
            {
            }
            else
            {
                //私有云模式
                oCn.RunProc("exec h_p_WMS_ERPSourceBillToLocal '" + HBillNo + "','" + HBillType + "'");
            }
            //免扫物料条码模式 或 原单据为扫码生成,对原扫描的条码进行核对
            if (sAutoBarCode == "Y" || sSourceBarCodeCtl == "Y")
@@ -65303,7 +65445,7 @@
            else
            {
                //将单据信息写入条码出入库临时表KF_PonderationBillMain_Temp
                DataSet ds1 = oCn.RunProcReturn("exec h_p_WMS_AddBillBarCode_BillCheck_New '" + HBillNo + "','" + HBillType + "','" + HMaker + "'," + HOWNERID.ToString() + ",'" + sWHSPCtl + "','" + sERPMode + "'", "h_p_WMS_AddBillBarCode_BillCheck_New");
                DataSet ds1 = oCn.RunProcReturn("exec h_p_WMS_AddBillBarCode_BillCheck_New '" + HBillNo + "','" + HBillType + "','" + HMaker + "'," + HOWNERID.ToString() + ",'" + sWHSPCtl + "','" + sWHCtl + "','" + sStockPlaceAutoCtl + "','" + sERPMode + "'", "h_p_WMS_AddBillBarCode_BillCheck_New");
                if (ds1 == null || ds1.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "单据号:" + HBillNo + ";将单据信息写入条码出入库临时表失败!";
@@ -65327,6 +65469,25 @@
                        oBar.HRemark = DBUtility.ClsPub.isStrNull(ds1.Tables[0].Rows[0]["HRemark"]);
                        oBar.HBack = DBUtility.ClsPub.isStrNull(ds1.Tables[0].Rows[0]["HBack"]);
                        oBar.HSourceBarCodeFlag = DBUtility.ClsPub.isBool(ds1.Tables[0].Rows[0]["HSourceBarCodeFlag"]);
                        //先进先出控制
                        if (sFIFOCtl == "1" || sFIFOCtl == "2" || sFIFOCtl == "3")  //系统参数  先进先出控制
                        {
                            DataSet FIFO = oCn.RunProcReturn("exec h_p_WMS_AddSourceFIFO_BillCheck '" + HBillType + "','" + HBillNo + "','" + sFIFOMode + "','" + sStockPlaceAutoCtl + "'," + HOWNERID.ToString(), "h_p_WMS_AddSourceFIFO_BillCheck");
                            if (FIFO == null || FIFO.Tables[0].Rows.Count == 0)
                            {
                                sErrMsg = "单据号:" + HBillNo + ",单据ID:" + oBar.HInterID + ";存入先进先出临时表失败!";
                                return null;
                            }
                            else
                            {
                                if (DBUtility.ClsPub.isLong(FIFO.Tables[0].Rows[0][0]) == 1)
                                {
                                    sErrMsg = "单据号:" + HBillNo + ",单据ID:" + oBar.HInterID + ";" + DBUtility.ClsPub.isStrNull(FIFO.Tables[0].Rows[0]["HRemark"]);
                                    return null;
                                }
                            }
                        }
                        return oBar;
                    }
                }
@@ -65831,11 +65992,11 @@
        #endregion
        #region 扫描物料条码    *校验模式
        #region 扫描物料条码    *校验模式     20251225
        //原单据非扫码生成,扫描物料条码  存入条码出入库临时表
        [WebMethod]
        public bool set_SavePonderationBillMain_Temp_BarCode_BillCheck(Model.ClsGy_BarCodeBill_WMS_Model_View omodel_View, Int64 HBillID, string HBillType, string HBillNo, string HMaker, Int64 HWhID, Int64 HSPID, Double HQty, Int64 HOWNERID, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
        public bool set_SavePonderationBillMain_Temp_BarCode_BillCheck(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, Int64 HOWNERID, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, Int64 Type, ref string sErrMsg)
        {
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            DAL.ClsKF_PonderationBillMain_Temp_Ctl tem = new DAL.ClsKF_PonderationBillMain_Temp_Ctl();
@@ -65843,10 +66004,12 @@
            double sRelQty = 0;
            string sWHSPCtl = "Y";                //校验-是否校对仓库仓位('Y'为校对)
            string sWHCtl = "Y";                  //校验-是否校对仓库('Y'为校对)
            string sMultilineCtl = "N";           //校验-多行相同物料自动拆分换行匹配('Y'为自动拆分)
            string sMustQtyCtl = "完全等于应收";  //校验数量控制(小于等于应收、完全等于应收、不控制)
            string sOneScanCtl = "N";             //一次扫码控制('Y'为控制)
            string sERPStockCtl = "N";            //库存控制-ERP负库存控制
            string sStockPlaceAutoCtl = "Y";      //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
            string sFIFOCtl = "4";                //先进先出控制(1、不控制仅显示下架清单 2、严格控制先进先出 3、仅提示和显示下架清单 4、不显示下架清单也不控制)
            #region 系统参数获取
            //采购入库单
@@ -65856,6 +66019,11 @@
                if (oSystemParameterMain.Kf_POStockInBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameterMain.Kf_POStockInBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-多行相同物料自动拆分换行匹配('Y'为自动拆分)
                if (oSystemParameterMain.Kf_POStockInBillCheck_MultilineCtl.ToUpper() == "Y")
@@ -65880,6 +66048,11 @@
                {
                    sOneScanCtl = "Y";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameterMain.Kf_POStockInBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
            }
            //生产入库单
            else if (HBillType == "1202")
@@ -65888,6 +66061,11 @@
                if (oSystemParameterMain.Kf_ProductInBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameterMain.Kf_ProductInBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-多行相同物料自动拆分换行匹配('Y'为自动拆分)
                if (oSystemParameterMain.Kf_ProductInBillCheck_MultilineCtl.ToUpper() == "Y")
@@ -65912,6 +66090,11 @@
                {
                    sOneScanCtl = "Y";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameterMain.Kf_ProductInBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
            }
            //其他入库单
            else if (HBillType == "1203")
@@ -65920,6 +66103,11 @@
                if (oSystemParameterMain.Kf_OtherInBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameterMain.Kf_OtherInBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-多行相同物料自动拆分换行匹配('Y'为自动拆分)
                if (oSystemParameterMain.Kf_OtherInBillCheck_MultilineCtl.ToUpper() == "Y")
@@ -65944,6 +66132,11 @@
                {
                    sOneScanCtl = "Y";
                }
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameterMain.Kf_OtherInBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sStockPlaceAutoCtl = "N";
                }
            }
            //领料出库单
            else if (HBillType == "1204")
@@ -65952,6 +66145,11 @@
                if (oSystemParameterMain.Kf_MateOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameterMain.Kf_MateOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-多行相同物料自动拆分换行匹配('Y'为自动拆分)
                if (oSystemParameterMain.Kf_MateOutBillCheck_MultilineCtl.ToUpper() == "Y")
@@ -65976,15 +66174,13 @@
                {
                    sOneScanCtl = "Y";
                }
                //库存控制-ERP负库存控制
                if (oSystemParameterMain.Kf_MateOutBillCheck_ERPMode == "CLOUD" && oSystemParameterMain.WMS_CloudMode.ToUpper() == "Y")
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameterMain.Kf_MateOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sERPStockCtl = "Y";
                    sStockPlaceAutoCtl = "N";
                }
                else
                {
                    sERPStockCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameterMain.Kf_MateOutBillCheck_FIFOCtl;
            }
            //销售出库单
            else if (HBillType == "1205")
@@ -65993,6 +66189,11 @@
                if (oSystemParameterMain.Kf_SellOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameterMain.Kf_SellOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-多行相同物料自动拆分换行匹配('Y'为自动拆分)
                if (oSystemParameterMain.Kf_SellOutBillCheck_MultilineCtl.ToUpper() == "Y")
@@ -66017,15 +66218,13 @@
                {
                    sOneScanCtl = "Y";
                }
                //库存控制-ERP负库存控制
                if (oSystemParameterMain.Kf_SellOutBillCheck_ERPMode == "CLOUD" && oSystemParameterMain.WMS_CloudMode.ToUpper() == "Y")
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameterMain.Kf_SellOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sERPStockCtl = "Y";
                    sStockPlaceAutoCtl = "N";
                }
                else
                {
                    sERPStockCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameterMain.Kf_SellOutBillCheck_FIFOCtl;
            }
            //其他出库单
            else if (HBillType == "1206")
@@ -66034,6 +66233,11 @@
                if (oSystemParameterMain.Kf_OtherOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameterMain.Kf_OtherOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-多行相同物料自动拆分换行匹配('Y'为自动拆分)
                if (oSystemParameterMain.Kf_OtherOutBillCheck_MultilineCtl.ToUpper() == "Y")
@@ -66058,15 +66262,13 @@
                {
                    sOneScanCtl = "Y";
                }
                //库存控制-ERP负库存控制
                if (oSystemParameterMain.Kf_OtherOutBillCheck_ERPMode == "CLOUD" && oSystemParameterMain.WMS_CloudMode.ToUpper() == "Y")
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameterMain.Kf_OtherOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sERPStockCtl = "Y";
                    sStockPlaceAutoCtl = "N";
                }
                else
                {
                    sERPStockCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameterMain.Kf_OtherOutBillCheck_FIFOCtl;
            }
            //委外领料单
            else if (HBillType == "1211")
@@ -66075,6 +66277,11 @@
                if (oSystemParameterMain.Kf_EntrustOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameterMain.Kf_EntrustOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-多行相同物料自动拆分换行匹配('Y'为自动拆分)
                if (oSystemParameterMain.Kf_EntrustOutBillCheck_MultilineCtl.ToUpper() == "Y")
@@ -66099,15 +66306,13 @@
                {
                    sOneScanCtl = "Y";
                }
                //库存控制-ERP负库存控制
                if (oSystemParameterMain.Kf_EntrustOutBillCheck_ERPMode == "CLOUD" && oSystemParameterMain.WMS_CloudMode.ToUpper() == "Y")
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameterMain.Kf_EntrustOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sERPStockCtl = "Y";
                    sStockPlaceAutoCtl = "N";
                }
                else
                {
                    sERPStockCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameterMain.Kf_EntrustOutBillCheck_FIFOCtl;
            }
            //生产补料单
            else if (HBillType == "1254")
@@ -66116,6 +66321,11 @@
                if (oSystemParameterMain.Kf_MateReplenishOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameterMain.Kf_MateReplenishOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-多行相同物料自动拆分换行匹配('Y'为自动拆分)
                if (oSystemParameterMain.Kf_MateReplenishOutBillCheck_MultilineCtl.ToUpper() == "Y")
@@ -66140,15 +66350,13 @@
                {
                    sOneScanCtl = "Y";
                }
                //库存控制-ERP负库存控制
                if (oSystemParameterMain.Kf_MateReplenishOutBillCheck_ERPMode == "CLOUD" && oSystemParameterMain.WMS_CloudMode.ToUpper() == "Y")
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameterMain.Kf_MateReplenishOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sERPStockCtl = "Y";
                    sStockPlaceAutoCtl = "N";
                }
                else
                {
                    sERPStockCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameterMain.Kf_MateReplenishOutBillCheck_FIFOCtl;
            }
            //委外补料单
            else if (HBillType == "1255")
@@ -66157,6 +66365,11 @@
                if (oSystemParameterMain.Kf_EntrustReplenishOutBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameterMain.Kf_EntrustReplenishOutBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-多行相同物料自动拆分换行匹配('Y'为自动拆分)
                if (oSystemParameterMain.Kf_EntrustReplenishOutBillCheck_MultilineCtl.ToUpper() == "Y")
@@ -66181,15 +66394,13 @@
                {
                    sOneScanCtl = "Y";
                }
                //库存控制-ERP负库存控制
                if (oSystemParameterMain.Kf_EntrustReplenishOutBillCheck_ERPMode == "CLOUD" && oSystemParameterMain.WMS_CloudMode.ToUpper() == "Y")
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameterMain.Kf_EntrustReplenishOutBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sERPStockCtl = "Y";
                    sStockPlaceAutoCtl = "N";
                }
                else
                {
                    sERPStockCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameterMain.Kf_EntrustReplenishOutBillCheck_FIFOCtl;
            }
            //直接调拨单
            else if (HBillType == "1207")
@@ -66198,6 +66409,11 @@
                if (oSystemParameterMain.Kf_MoveStockBillCheck_WHSPCtl.ToUpper() == "N")
                {
                    sWHSPCtl = "N";
                }
                //校验-是否校对仓库('Y'为校对)
                if (oSystemParameterMain.Kf_MoveStockBillCheck_WHCtl.ToUpper() == "N")
                {
                    sWHCtl = "N";
                }
                //校验-多行相同物料自动拆分换行匹配('Y'为自动拆分)
                if (oSystemParameterMain.Kf_MoveStockBillCheck_MultilineCtl.ToUpper() == "Y")
@@ -66222,21 +66438,19 @@
                {
                    sOneScanCtl = "Y";
                }
                //库存控制-ERP负库存控制
                if (oSystemParameterMain.Kf_MoveStockBillCheck_ERPMode == "CLOUD" && oSystemParameterMain.WMS_CloudMode.ToUpper() == "Y")
                //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地)
                if (oSystemParameterMain.Kf_MoveStockBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N")
                {
                    sERPStockCtl = "Y";
                    sStockPlaceAutoCtl = "N";
                }
                else
                {
                    sERPStockCtl = "N";
                }
                //先进先出控制
                sFIFOCtl = oSystemParameterMain.Kf_MoveStockBillCheck_FIFOCtl;
            }
            #endregion
            string HMaterNumber;        //物料代码
            //判断是否存在相同条码,判断所扫条码是否在单据中
            DataSet ds1 = oCn.RunProcReturn("exec h_p_WMS_AddBarCode_BillCheck_New '" + omodel_View.HBarCode + "'," + HBillID.ToString() + ",'" + HBillNo + "','" + HBillType + "'," + HWhID + "," + HSPID + ",'" + sWHSPCtl + "','" + sMultilineCtl + "'", "h_p_WMS_AddBarCode_BillCheck_New");
            DataSet ds1 = oCn.RunProcReturn("exec h_p_WMS_AddBarCode_BillCheck_New '" + omodel_View.HBarCode + "'," + HBillID.ToString() + ",'" + HBillNo + "','" + HBillType + "'," + HWhID + "," + HSPID + ",'" + sWHSPCtl + "','" + sWHCtl + "','" + sMultilineCtl + "'", "h_p_WMS_AddBarCode_BillCheck_New");
            if (ds1 == null || ds1.Tables[0].Rows.Count == 0)
            {
                sErrMsg = "判断所扫条码是否在单据中发生错误!";
@@ -66248,9 +66462,61 @@
                {
                    omodel_View.HMaterID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["HMaterID"]);
                    omodel_View.HSourceQty = DBUtility.ClsPub.isDoule(ds1.Tables[0].Rows[0]["HSumQtyMust"]);     //HSumQtyMust为源单相同物料剩余可扫数量
                    HWhID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["sHWhID"]);
                    HSPID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["sHSPID"]);
                    HWhID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["sHWhID"]);   //仓库/调出仓库
                    HSCWHID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["HWhID"]);  //调入仓库
                    HMaterNumber = DBUtility.ClsPub.isStrNull(ds1.Tables[0].Rows[0]["HMaterNumber"]);
                    //仓位数据从ERP中同步至本地
                    if (sStockPlaceAutoCtl == "Y")
                    {
                        HSPID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["sHSPID"]);   //仓位/调出仓位
                        HSCSPID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["HSPID"]);  //调入仓位
                    }
                    //仓位数据本地维护
                    else
                    {
                        //判断仓库仓位/调出仓库仓位是否正确
                        DataSet dsSP = oCn.RunProcReturn("exec h_p_WMS_CheckWHandSP " + HWhID.ToString() + "," + HSPID.ToString(), "h_p_WMS_CheckWHandSP");
                        if (dsSP == null || dsSP.Tables[0].Rows.Count == 0)
                        {
                            sErrMsg = "扫描物料条码判断仓库仓位是否正确发生错误!";
                            return false;
                        }
                        else
                        {
                            if (DBUtility.ClsPub.isLong(dsSP.Tables[0].Rows[0][0]) == 1)
                            {
                                if (HBillType == "1207" || HBillType == "1250" || HBillType == "1251")
                                {
                                    sErrMsg = "调出" + DBUtility.ClsPub.isStrNull(dsSP.Tables[0].Rows[0]["HRemark"]);
                                }
                                else
                                {
                                    sErrMsg = DBUtility.ClsPub.isStrNull(dsSP.Tables[0].Rows[0]["HRemark"]);
                                }
                                return false;
                            }
                        }
                        //调拨模块,判断调入仓库仓位是否正确
                        if (HBillType == "1207" || HBillType == "1250" || HBillType == "1251")
                        {
                            DataSet dsSCSP = oCn.RunProcReturn("exec h_p_WMS_CheckWHandSP " + HSCWHID.ToString() + "," + HSCSPID.ToString(), "h_p_WMS_CheckWHandSP");
                            if (dsSCSP == null || dsSCSP.Tables[0].Rows.Count == 0)
                            {
                                sErrMsg = "扫描物料条码判断调入仓库仓位是否正确发生错误!";
                                return false;
                            }
                            else
                            {
                                if (DBUtility.ClsPub.isLong(dsSCSP.Tables[0].Rows[0][0]) == 1)
                                {
                                    sErrMsg = "调入" + DBUtility.ClsPub.isStrNull(dsSCSP.Tables[0].Rows[0]["HRemark"]);
                                    return false;
                                }
                            }
                        }
                    }
                }
                else
                {
@@ -66315,7 +66581,7 @@
                || HBillType == "1254" || HBillType == "1255" || HBillType == "1207" || HBillType == "1250")
            {
                //库存控制-WMS负库存控制
                if (omodel_View.HBarCodeType == "唯一条码" && oSystemParameterMain.WMS_WMSStockCtl.ToUpper() == "Y")
                if (oSystemParameterMain.WMS_WMSStockCtl.ToUpper() == "Y")
                {
                    //判断WMS库存   返回WMS库存数量
                    DataSet DsWMS = oCn.RunProcReturn("exec h_p_WMS_AddBarCode_GetWMSICInventory " + HBillID.ToString() + ",'" + HBillType + "','" + omodel_View.HBarCode + "'," + HWhID.ToString() + "," + HSPID.ToString() + "," + HOWNERID.ToString(), "h_p_WMS_AddBarCode_GetWMSICInventory");
@@ -66346,7 +66612,7 @@
                }
                //库存控制-ERP负库存控制     金蝶云私有云模式
                if (sERPStockCtl == "Y")
                if (oSystemParameterMain.WMS_ERPStockCtl.ToUpper() == "Y" && oSystemParameterMain.WMS_CloudMode.ToUpper() == "Y")
                {
                    //判断ERP库存   返回ERP库存数量
                    DataSet DsERP = oCn.RunProcReturn("exec h_p_WMS_AddBarCode_GetERPICInventory_New " + HBillID.ToString() + ",'" + HBillType + "','" + omodel_View.HBarCode + "'," + HWhID.ToString() + "," + HSPID.ToString() + "," + HOWNERID.ToString(), "h_p_WMS_AddBarCode_GetERPICInventory_New");
@@ -66373,6 +66639,36 @@
                        }
                    }
                }
                //先进先出控制(Type != 2 代表强控)
                if (Type != 2 && (sFIFOCtl == "2" || sFIFOCtl == "3"))  //系统参数  先进先出控制(2、严格控制先进先出 3、仅提示和显示下架清单)
                {
                    DataSet dsFIFO = oCn.RunProcReturn("exec h_p_WMS_FIFOCheck " + HBillID.ToString() + ",'" + HBillType + "','" + omodel_View.HBatchNo + "','" + omodel_View.HBarCode + "'," + sRelQty.ToString() + "," + HWhID.ToString() + "," + HSPID.ToString(), "h_p_WMS_FIFOCheck");
                    if (dsFIFO == null || dsFIFO.Tables[0].Rows.Count == 0)
                    {
                        sErrMsg = "判断先进先出控制发生错误!";
                        return false;
                    }
                    else
                    {
                        if (DBUtility.ClsPub.isLong(dsFIFO.Tables[0].Rows[0][0]) == 0)
                        {
                            sRelQty = DBUtility.ClsPub.isDoule(dsFIFO.Tables[0].Rows[0]["HQty"]);
                        }
                        else
                        {
                            if (sFIFOCtl == "2")
                            {
                                sErrMsg = DBUtility.ClsPub.isStrNull(dsFIFO.Tables[0].Rows[0]["HRemark"]);
                            }
                            else
                            {
                                sErrMsg = "NO" + DBUtility.ClsPub.isStrNull(dsFIFO.Tables[0].Rows[0]["HRemark"]);
                            }
                            return false;
                        }
                    }
                }
            }
            //采购入库(1201)、产品入库(1202)、其他入库蓝字(1203)、委外入库(1210)
            //生产退料(1244)、销售退库(1247)、其他出库红字(1249)、委外退料(1238)
@@ -66391,7 +66687,7 @@
                    {
                        if (DBUtility.ClsPub.isDoule(DsInQty.Tables[0].Rows[0]["HQty"]) == 0)
                        {
                            sErrMsg = "所扫描物料条码: " + omodel_View.HBarCode + " ,已被其他单据扫描入库,不允许再次扫码!";
                            sErrMsg = "所扫描物料条码: " + omodel_View.HBarCode + " ,已扫码入库,不允许再次扫码!";
                            return false;
                        }
                        else if (DBUtility.ClsPub.isDoule(DsInQty.Tables[0].Rows[0]["HQty"]) < sRelQty)
@@ -66420,17 +66716,20 @@
            //唯一条码,一次扫码控制,同一条码、同一单据类型,在WMS表和TEMP表里,只允许进行一次扫码
            if (omodel_View.HBarCodeType == "唯一条码" && sOneScanCtl == "Y")
            {
                Int64 HSCWHID = 0;            //调出仓库ID
                Int64 HSCSPID = 0;            //调出仓位ID
                Int64 sHWhID = 0;            //仓库/调入仓库ID
                Int64 sHSPID = 0;            //仓位/调入仓位ID
                //直接调拨单(1207)、分步式调出单(1250)、分步式调入单(1251)
                if (HBillType == "1207" || HBillType == "1250" || HBillType == "1251")
                {
                    HSCWHID = HWhID;
                    HSCSPID = HSPID;
                    HWhID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["HWhID"]);
                    HSPID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["HSPID"]);
                    sHWhID = HSCWHID;
                    sHSPID = HSCSPID;
                }
                DataSet dsOneScan = oCn.RunProcReturn("exec h_p_WMS_AddBarCode_OneScan '" + omodel_View.HBarCode + "'," + HBillID.ToString() + ",'" + HBillNo + "','" + HBillType + "'," + HWhID + "," + HSPID + "," + HSCWHID + "," + HSCSPID + ",'" + HMaker + "'", "h_p_WMS_AddBarCode_OneScan");
                else
                {
                    sHWhID = HWhID;
                    sHSPID = HSPID;
                }
                DataSet dsOneScan = oCn.RunProcReturn("exec h_p_WMS_AddBarCode_OneScan '" + omodel_View.HBarCode + "'," + HBillID.ToString() + ",'" + HBillNo + "','" + HBillType + "'," + sHWhID + "," + sHSPID + "," + HWhID + "," + HSPID + ",'" + HMaker + "'", "h_p_WMS_AddBarCode_OneScan");
                if (dsOneScan == null || dsOneScan.Tables[0].Rows.Count == 0)
                {
                }
@@ -66510,8 +66809,8 @@
                oMain.HMTONo = omodel_View.HMTONo;
                if (HBillType == "1207" || HBillType == "1250" || HBillType == "1251")
                {
                    oMain.HWhID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[i]["HWhID"]);
                    oMain.HStockPlaceID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[i]["HSPID"]);
                    oMain.HWhID = HSCWHID;
                    oMain.HStockPlaceID = HSCSPID;
                    oMain.HSCWHID = HWhID;
                    oMain.HOutStockPlaceID = HSPID;
                }
@@ -67057,7 +67356,7 @@
                            //条码类型不为托盘条码
                            {
                                //将物料条码信息写入条码出入库临时表
                                if (!set_SavePonderationBillMain_Temp_BarCode_BillCheck(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HQty, HOWNERID, oSystemParameter.omodel, ref sErrMsg))
                                if (!set_SavePonderationBillMain_Temp_BarCode_BillCheck(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, 0, 0, HQty, HOWNERID, oSystemParameter.omodel, 1, ref sErrMsg))
                                {
                                    sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描物料条码失败!" + sErrMsg;
                                    return null;
@@ -67113,7 +67412,7 @@
                                //条码类型不为托盘条码
                                {
                                    //将物料条码信息写入条码出入库临时表
                                    if (!set_SavePonderationBillMain_Temp_BarCode_BillCheck(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HQty, HOWNERID, oSystemParameter.omodel, ref sErrMsg))
                                    if (!set_SavePonderationBillMain_Temp_BarCode_BillCheck(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, 0, 0, HQty, HOWNERID, oSystemParameter.omodel, 1, ref sErrMsg))
                                    {
                                        sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描物料条码失败!" + sErrMsg;
                                        return null;
@@ -67241,7 +67540,284 @@
        #endregion
        #region 一键扫码(原单据为扫码生成,对原扫描的条码进行核对)        *校验模式
        #region 一键扫码(原单据非扫码生成)        *校验模式     20251225
        //一键扫码模式,根据条码前缀走 不同方法(仓库条码、仓位条码、单据号条码、物料条码)
        [WebMethod]
        public Model.ClsKf_ICStockBill_WMS get_CheckTypeByBarCode_BillCheck_New(string sBarCode, Int64 HBillID, string HBillType, string HBillNo, string HMaker, Int64 HWhID, Int64 HSPID, Int64 HSCWHID, Int64 HSCSPID, Double HQty, Int64 HOWNERID, ref string sErrMsg)
        {
            try
            {
                Int64 Type = 1; //区分先进先出是否强控制,1为强控,2为不控制
                //获取系统参数
                Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
                if (oSystemParameter.ShowBillByOrgID(HOWNERID, ref sErrMsg) == false)
                {
                    sErrMsg = "获取系统参数失败! " + sErrMsg;
                    return null;
                }
                if (sBarCode.Trim() == "")
                {
                    sErrMsg = "条码不能为空,请扫描条码!";
                    return null;
                }
                else
                {
                    //判断条码是否含特殊符号 # ,如果含有则 拆分
                    string[] NewBarCode;
                    if (sBarCode.Contains("#"))
                    {
                        NewBarCode = sBarCode.Split(Convert.ToChar("#"));
                        sBarCode = NewBarCode[0];
                        if (HQty == 0)
                        {
                            HQty = DBUtility.ClsPub.isDoule(NewBarCode[1]);
                        }
                    }
                }
                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                Model.ClsKf_ICStockBill_WMS oBar = new Model.ClsKf_ICStockBill_WMS();
                //根据系统参数,判断是否启用一键扫码模式,Y为启用
                //未启用,只扫描物料条码
                if (oSystemParameter.omodel.WMS_OneKeyMode.ToUpper() == "N")
                {
                    DAL.ClsGy_BarCodeBill_View dal = new DAL.ClsGy_BarCodeBill_View();
                    if (dal.GetInfoByBarCode(sBarCode, HBillType, HOWNERID))
                    {
                        if (dal.omodel_View.HStopflag)
                        {
                            sErrMsg = "条码已被禁用,不允许扫描!";
                            return null;
                        }
                        else
                        {
                            //判断条码类型是否为托盘条码,如果是托盘条码则分解并模拟扫码
                            if (dal.omodel_View.HBarCodeType == "托盘条码")
                            {
                                //将托条码信息写入条码出入库临时表
                                oBar = get_SavePonderationBillMain_Temp_PackBarCode_BillCheck(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HOWNERID, oSystemParameter.omodel, ref sErrMsg);
                                if (oBar == null)
                                {
                                    sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描失败!" + sErrMsg;
                                    return null;
                                }
                                else
                                {
                                    return oBar;
                                }
                            }
                            else
                            //条码类型不为托盘条码
                            {
                                //将物料条码信息写入条码出入库临时表
                                if (!set_SavePonderationBillMain_Temp_BarCode_BillCheck(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HSCWHID, HSCSPID, HQty, HOWNERID, oSystemParameter.omodel, Type, ref sErrMsg))
                                {
                                    //判断字符串 sErrMsg 是否以 "NO" 开头(不区分大小写)
                                    if (sErrMsg.StartsWith("NO", StringComparison.OrdinalIgnoreCase))
                                    {
                                        sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描物料条码失败!" + sErrMsg;
                                        oBar.HRemark = "仅提示";
                                        return oBar;
                                    }
                                    else
                                    {
                                        sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描物料条码失败!" + sErrMsg;
                                        return null;
                                    }
                                }
                                oBar.HBarType = "物料条码";
                                return oBar;
                            }
                        }
                    }
                    else
                    {
                        sErrMsg = "条码档案中不存在该条码,请确认条码是否正确或是否已被删除!";
                        return null;
                    }
                }
                //启用,根据条码前缀走不同方法(仓库条码、仓位条码、单据条码、物料条码)
                else
                {
                    string sBarCodePrefix = sBarCode.Substring(0, Math.Min(3, sBarCode.Length));//截取条码前三位字符串
                    //根据递入的条码前三位,判断条码类型(仓库条码、仓位条码、单据条码、物料条码)
                    DataSet Dss = oCn.RunProcReturn(" select HSourceName,BarCodeType from Xt_BarCodeType where HSourceNumber= '" + sBarCodePrefix + "'", "Xt_BarCodeType");
                    //无返回数据则为物料条码
                    if (Dss == null || Dss.Tables[0].Rows.Count == 0)
                    {
                        DAL.ClsGy_BarCodeBill_View dal = new DAL.ClsGy_BarCodeBill_View();
                        if (dal.GetInfoByBarCode(sBarCode, HBillType, HOWNERID))
                        {
                            if (dal.omodel_View.HStopflag)
                            {
                                sErrMsg = "条码已被禁用,不允许扫描!";
                                return null;
                            }
                            else
                            {
                                //判断条码类型是否为托盘条码,如果是托盘条码则分解并模拟扫码
                                if (dal.omodel_View.HBarCodeType == "托盘条码")
                                {
                                    //将托条码信息写入条码出入库临时表
                                    oBar = get_SavePonderationBillMain_Temp_PackBarCode_BillCheck(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HOWNERID, oSystemParameter.omodel, ref sErrMsg);
                                    if (oBar == null)
                                    {
                                        sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描失败!" + sErrMsg;
                                        return null;
                                    }
                                    else
                                    {
                                        return oBar;
                                    }
                                }
                                else
                                //条码类型不为托盘条码
                                {
                                    //将物料条码信息写入条码出入库临时表
                                    if (!set_SavePonderationBillMain_Temp_BarCode_BillCheck(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HSCWHID, HSCSPID, HQty, HOWNERID, oSystemParameter.omodel, Type, ref sErrMsg))
                                    {
                                        //判断字符串 sErrMsg 是否以 "NO" 开头(不区分大小写)
                                        if (sErrMsg.StartsWith("NO", StringComparison.OrdinalIgnoreCase))
                                        {
                                            sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描物料条码失败!" + sErrMsg;
                                            oBar.HRemark = "仅提示";
                                            return oBar;
                                        }
                                        else
                                        {
                                            sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描物料条码失败!" + sErrMsg;
                                            return null;
                                        }
                                    }
                                    oBar.HBarType = "物料条码";
                                    return oBar;
                                }
                            }
                        }
                        else
                        {
                            sErrMsg = "条码档案中不存在该条码,请确认条码是否正确或是否已被删除!";
                            return null;
                        }
                    }
                    //仓库条码、仓位条码、单据条码
                    else
                    {
                        string sBarBillName = Pub_Class.ClsPub.isStrNull(Dss.Tables[0].Rows[0]["HSourceName"]);
                        string sBarBillType = Pub_Class.ClsPub.isStrNull(Dss.Tables[0].Rows[0]["BarCodeType"]);
                        //判断条码类型为 基础资料条码 或 源单条码
                        if (sBarBillType == "基础资料条码")
                        {
                            //仓库条码
                            if (sBarBillName == "仓库")
                            {
                                //将递入的条码去掉前三位后转化成整形,TryParse不能转换成整数时返回false,并返回ID=0
                                int ID;
                                if (int.TryParse(sBarCode.Remove(0, 3), out ID))
                                {
                                    DataSet ds = oCn.RunProcReturn("exec h_p_Gy_Warehouse_PDA " + ID.ToString() + "," + HOWNERID.ToString(), "h_p_Gy_Warehouse_PDA");
                                    if (ds == null || ds.Tables[0].Rows.Count == 0)
                                    {
                                        sErrMsg = "无效仓库条码!";
                                        return null;
                                    }
                                    else
                                    {
                                        oBar.HBarType = "仓库条码";
                                        oBar.HWhID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HItemID"]);
                                        oBar.HWhNumber = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HNumber"]);
                                        oBar.HWhName = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HName"]);
                                        oBar.HSPFlag = DBUtility.ClsPub.isBool(ds.Tables[0].Rows[0]["HSPFlag"]);
                                        oBar.HSPID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HSPID"]);
                                        oBar.HSPNumber = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HSPNumber"]);
                                        oBar.HSPName = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HSPName"]);
                                        return oBar;
                                    }
                                }
                                else
                                {
                                    sErrMsg = "错误的仓库条码!";
                                    return null;
                                }
                            }
                            //仓位条码
                            else if (sBarBillName == "仓位")
                            {
                                DAL.ClsIF_StockPlace_View dal = new DAL.ClsIF_StockPlace_View();
                                //将递入的条码去掉前三位后转化成整形
                                int sHSPID;
                                int sHWHID;
                                string[] sArray = sBarCode.Remove(0, 3).Split(';');
                                if (int.TryParse(sArray[1], out sHSPID) && int.TryParse(sArray[0], out sHWHID))
                                {
                                    if (dal.GetInfoByID(sHSPID, sHWHID, HOWNERID))
                                    {
                                        oBar.HBarType = "仓位条码";
                                        oBar.HSPID = dal.omodel.HItemID;
                                        oBar.HSPNumber = dal.omodel.HNumber;
                                        oBar.HSPName = dal.omodel.HName;
                                        oBar.HWhID = dal.omodel.HWHID;
                                        oBar.HWhNumber = dal.omodel.HWhNumber;
                                        oBar.HWhName = dal.omodel.HWhName;
                                        return oBar;
                                    }
                                    else
                                    {
                                        sErrMsg = "无效仓位条码!";
                                        return null;
                                    }
                                }
                                else
                                {
                                    sErrMsg = "错误的仓位条码!";
                                    return null;
                                }
                            }
                            else
                            {
                                sErrMsg = "无效基础资料条码!";
                                return null;
                            }
                        }
                        //单据条码
                        else if (sBarBillType == "源单条码")
                        {
                            oBar = get_BillBarCode_BillCheck(HBillNo, HBillType, HMaker, HOWNERID, ref sErrMsg);
                            if (oBar == null)
                            {
                                sErrMsg = "启用一键扫码模式," + sErrMsg;
                                return null;
                            }
                            else
                            {
                                oBar.HBarType = "单据条码";
                                return oBar;
                            }
                        }
                        else
                        {
                            sErrMsg = "启用一键扫码模式,所扫条码前缀设置错误!";
                            return null;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                sErrMsg = e.Message + ";" + e.StackTrace;
                return null;
            }
        }
        #endregion
        #region 一键扫码(原单据为扫码生成,对原扫描的条码进行核对)        *校验模式     20251225
        //原单据为扫码生成,对原扫描的条码进行核对
        [WebMethod]
@@ -67374,6 +67950,99 @@
        #endregion
        #region  扫描物料条码  启用先进先出仅提示控制,条码不在先进先出列表中允许扫描写入    *校验模式     20251225
        //启用先进先出仅提示控制,条码不在先进先出列表中  存入条码出入库临时表
        [WebMethod]
        public Model.ClsKf_ICStockBill_WMS get_SavePonderationBillMain_Temp_BarCodeFIFO_BillCheck(string sBarCode, Int64 HBillID, string HBillType, string HBillNo, string HMaker, Int64 HWhID, Int64 HSPID, Int64 HSCWHID, Int64 HSCSPID, Double HQty, Int64 HOWNERID, ref string sErrMsg)
        {
            try
            {
                Int64 Type = 2; //区分先进先出是否强控制,1为强控,2为不控制
                //获取系统参数
                Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
                if (oSystemParameter.ShowBillByOrgID(HOWNERID, ref sErrMsg) == false)
                {
                    sErrMsg = "获取系统参数失败! " + sErrMsg;
                    return null;
                }
                if (sBarCode.Trim() == "")
                {
                    sErrMsg = "条码不能为空,请扫描条码!";
                    return null;
                }
                else
                {
                    //判断条码是否含特殊符号 # ,如果含有则 拆分
                    string[] NewBarCode;
                    if (sBarCode.Contains("#"))
                    {
                        NewBarCode = sBarCode.Split(Convert.ToChar("#"));
                        sBarCode = NewBarCode[0];
                        if (HQty == 0)
                        {
                            HQty = DBUtility.ClsPub.isDoule(NewBarCode[1]);
                        }
                    }
                }
                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();
                if (dal.GetInfoByBarCode(sBarCode, HBillType, HOWNERID))
                {
                    if (dal.omodel_View.HStopflag)
                    {
                        sErrMsg = "条码已被禁用,不允许扫描!";
                        return null;
                    }
                    else
                    {
                        //判断条码类型是否为托盘条码,如果是托盘条码则分解并模拟扫码
                        if (dal.omodel_View.HBarCodeType == "托盘条码")
                        {
                            //将托条码信息写入条码出入库临时表
                            oBar = get_SavePonderationBillMain_Temp_PackBarCode_BillCheck(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HOWNERID, oSystemParameter.omodel, ref sErrMsg);
                            if (oBar == null)
                            {
                                sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描失败!" + sErrMsg;
                                return null;
                            }
                            else
                            {
                                return oBar;
                            }
                        }
                        else
                        //条码类型不为托盘条码
                        {
                            //将物料条码信息写入条码出入库临时表
                            if (!set_SavePonderationBillMain_Temp_BarCode_BillCheck(dal.omodel_View, HBillID, HBillType, HBillNo, HMaker, HWhID, HSPID, HSCWHID, HSCSPID, HQty, HOWNERID, oSystemParameter.omodel, Type, ref sErrMsg))
                            {
                                sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HBillID + ";扫描物料条码失败!" + sErrMsg;
                                return null;
                            }
                            oBar.HBarType = "物料条码";
                            return oBar;
                        }
                    }
                }
                else
                {
                    sErrMsg = "条码档案中不存在该条码,请确认条码是否正确或是否已被删除!";
                    return null;
                }
            }
            catch (Exception e)
            {
                sErrMsg = e.Message + ";" + e.StackTrace;
                return null;
            }
        }
        #endregion
        #region 返回单据物料列表信息  *校验模式
        [WebMethod]
DLL/Pub_Class.dll
Binary files differ