| | |
| | | |
| | | #endregion |
| | | |
| | | #region 扫描单据条码 *校验模式 |
| | | #region 扫描单据条码 *校验模式 20251225 |
| | | |
| | | [WebMethod] |
| | | public Model.ClsKf_ICStockBill_WMS get_BillBarCode_BillCheck(string HBillNo, string HBillType, string HMaker, Int64 HOWNERID, ref string sErrMsg) |
| | |
| | | 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 系统参数获取 |
| | | //采购入库单 |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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 + ";将单据信息写入条码出入库临时表失败!"; |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | |
| | | #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(); |
| | |
| | | |
| | | 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 系统参数获取 |
| | | //采购入库单 |
| | |
| | | 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") |
| | |
| | | { |
| | | sOneScanCtl = "Y"; |
| | | } |
| | | //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地) |
| | | if (oSystemParameterMain.Kf_POStockInBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N") |
| | | { |
| | | sStockPlaceAutoCtl = "N"; |
| | | } |
| | | } |
| | | //生产入库单 |
| | | else if (HBillType == "1202") |
| | |
| | | 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") |
| | |
| | | { |
| | | sOneScanCtl = "Y"; |
| | | } |
| | | //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地) |
| | | if (oSystemParameterMain.Kf_ProductInBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N") |
| | | { |
| | | sStockPlaceAutoCtl = "N"; |
| | | } |
| | | } |
| | | //其他入库单 |
| | | else if (HBillType == "1203") |
| | |
| | | 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") |
| | |
| | | { |
| | | sOneScanCtl = "Y"; |
| | | } |
| | | //仓位是否从ERP同步('N'为仓位数据本地维护,'Y'为仓位数据从ERP中同步至本地) |
| | | if (oSystemParameterMain.Kf_OtherInBillCheck_ERPMode.ToUpper() != "WMS" && oSystemParameterMain.WMS_StockPlaceAutoCtl.ToUpper() == "N") |
| | | { |
| | | sStockPlaceAutoCtl = "N"; |
| | | } |
| | | } |
| | | //领料出库单 |
| | | else if (HBillType == "1204") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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") |
| | |
| | | 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") |
| | |
| | | { |
| | | 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 = "判断所扫条码是否在单据中发生错误!"; |
| | |
| | | { |
| | | 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 |
| | | { |
| | |
| | | || 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"); |
| | |
| | | } |
| | | |
| | | //库存控制-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"); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | //先进先出控制(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) |
| | |
| | | { |
| | | 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) |
| | |
| | | //唯一条码,一次扫码控制,同一条码、同一单据类型,在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) |
| | | { |
| | | } |
| | |
| | | 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; |
| | | } |
| | |
| | | //条码类型不为托盘条码 |
| | | { |
| | | //将物料条码信息写入条码出入库临时表 |
| | | 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; |
| | |
| | | //条码类型不为托盘条码 |
| | | { |
| | | //将物料条码信息写入条码出入库临时表 |
| | | 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; |
| | |
| | | |
| | | #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] |
| | |
| | | |
| | | #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] |