yxj
2022-10-31 036b201725444739c8c5ee9166df83d650fc0d72
销售出库扫描条码优化修改
1个文件已修改
71 ■■■■ 已修改文件
CLOUDWEB/WebService1.asmx.cs 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CLOUDWEB/WebService1.asmx.cs
@@ -39359,6 +39359,13 @@
                        //库存控制-WMS负库存控制     唯一条码、启用条码库存,仓库仓位获取顺序:界面上仓库仓位 > 条码库存仓库仓位
                        if (dal.omodel_View.HBarCodeType == "唯一条码" && oSystemParameterMain.WMS_WMSStockCtl == "Y")
                        {
                            //sWHSPCtl=1,表示界面上仓库仓位为空
                            if (sWHSPCtl == 1)
                            {
                                HWhID = 0;
                                HSPID = 0;
                            }
                            //判断条码库存   返回条码库存数量
                            DataSet DsWMS = oCn.RunProcReturn("exec h_p_WMS_AddBarCode_GetWMSICInventory_Pack_ZhuoLi " + HInterID.ToString() + ",'" + HBillType + "','" + sHBarCode_Pack + "'," + HWhID.ToString() + "," + HSPID.ToString() + "," + HStockOrgID.ToString(), "h_p_WMS_AddBarCode_GetWMSICInventory_Pack_ZhuoLi");
                            if (DsWMS == null || DsWMS.Tables[0].Rows.Count == 0)
@@ -40827,7 +40834,7 @@
                    //先进先出控制
                    if (oSystemParameter.omodel.Kf_SellOutBill_FIFOCtl == "Y")  //系统参数  销售出库单-先进先出控制
                    {
                        DataSet FIFO = oCn.RunProcReturn("exec h_p_WMS_AddSourceFIFO_SellOut " + HInterID.ToString() + ",'" + HBillType + "','" + HSourceBillNo + "','" + HSourceBillType + "'," + HFIFOWhID.ToString(), "h_p_WMS_AddSourceFIFO_SellOut");
                        DataSet FIFO = oCn.RunProcReturn("exec h_p_WMS_AddSourceFIFO_SellOut " + HInterID.ToString() + ",'" + HBillType + "','" + HSourceBillNo + "','" + HSourceBillType + "'," + HFIFOWhID.ToString() + "," + HOWNERID.ToString(), "h_p_WMS_AddSourceFIFO_SellOut");
                        if (FIFO == null || FIFO.Tables[0].Rows.Count == 0)
                        {
                            sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";存入先进先出临时表失败!";
@@ -40845,7 +40852,7 @@
                    //先进先出下架清单
                    else if (oSystemParameter.omodel.Kf_SellOutBill_FIFOList == "Y")  //系统参数  销售出库单-先进先出下架清单
                    {
                        DataSet FIFOList = oCn.RunProcReturn("exec h_p_WMS_AddSourceFIFOList_SellOut " + HInterID.ToString() + ",'" + HBillType + "','" + HSourceBillNo + "','" + HSourceBillType + "'," + HFIFOWhID.ToString(), "h_p_WMS_AddSourceFIFOList_SellOut");
                        DataSet FIFOList = oCn.RunProcReturn("exec h_p_WMS_AddSourceFIFOList_SellOut " + HInterID.ToString() + ",'" + HBillType + "','" + HSourceBillNo + "','" + HSourceBillType + "'," + HFIFOWhID.ToString() + "," + HOWNERID.ToString(), "h_p_WMS_AddSourceFIFOList_SellOut");
                        if (FIFOList == null || FIFOList.Tables[0].Rows.Count == 0)
                        {
                            sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";存入先进先出下架清单失败!";
@@ -42708,6 +42715,13 @@
                //库存控制-WMS负库存控制     唯一条码、启用条码库存,仓库仓位获取顺序:界面上仓库仓位 > 条码库存仓库仓位
                if (omodel_View.HBarCodeType == "唯一条码" && oSystemParameterMain.WMS_WMSStockCtl == "Y")
                {
                    //sWHSPCtl=1,表示界面上仓库仓位为空
                    if (sWHSPCtl == 1)
                    {
                        HWhID = 0;
                        HSPID = 0;
                    }
                    //判断条码库存   返回条码库存数量
                    DataSet DsWMS = oCn.RunProcReturn("exec h_p_WMS_AddBarCode_GetWMSICInventory " + HInterID.ToString() + ",'" + HBillType + "','" + omodel_View.HBarCode + "'," + HWhID.ToString() + "," + HSPID.ToString() + "," + HStockOrgID.ToString(), "h_p_WMS_AddBarCode_GetWMSICInventory");
                    if (DsWMS == null || DsWMS.Tables[0].Rows.Count == 0)
@@ -42738,42 +42752,31 @@
                else
                //未启用条码库存,仓库仓位获取顺序:界面上仓库仓位 > 源单仓库仓位 > 物料默认仓库仓位
                {
                    if (HWhID == 0)
                    //sWHSPCtl=1,表示界面上仓库仓位为空    匹配源单数据时返回多行数据,判断返回的多行数据中仓库仓位是否相同
                    if (sWHSPCtl == 1 && dsSource.Tables[0].Rows.Count > 1)
                    {
                        //匹配源单数据时只返回唯一一行数据,且仓库ID不为0,仓库仓位取返回的仓库仓位值
                        if (dsSource.Tables[0].Rows.Count == 1 && omodel_View.HWHID != 0)
                        double sSumQty2 = 0;
                        double sRemQty2 = 0;
                        long sWHID = 0;
                        long sSPID = 0;
                        for (int i = 0; i < dsSource.Tables[0].Rows.Count; i++)
                        {
                            HWhID = omodel_View.HWHID;
                            HSPID = omodel_View.HSPID;
                        }
                        //匹配源单数据时返回多行数据,判断拆分后的子表对应仓库仓位是否相同,相同 取返回的仓库仓位值;不同 取界面上仓库仓位
                        else
                        {
                            double sSumQty2 = 0;
                            double sRemQty2 = 0;
                            long sWHID = 0;
                            long sSPID = 0;
                            for (int i = 0; i < dsSource.Tables[0].Rows.Count; i++)
                            omodel_View.HSourceQty = DBUtility.ClsPub.isDoule(dsSource.Tables[0].Rows[i]["HQtyMust"]);   //存在相同物料时,其中一行源单剩余可扫数量
                            sSumQty2 = sSumQty2 + omodel_View.HSourceQty;
                            sRemQty2 = sRelQty - sSumQty2;
                            if (i > 0 && (sWHID != DBUtility.ClsPub.isLong(dsSource.Tables[0].Rows[i]["HWhID"]) || sSPID != DBUtility.ClsPub.isLong(dsSource.Tables[0].Rows[i]["HSPID"])))
                            {
                                omodel_View.HSourceQty = DBUtility.ClsPub.isDoule(dsSource.Tables[0].Rows[i]["HQtyMust"]);   //存在相同物料时,其中一行源单剩余可扫数量
                                sSumQty2 = sSumQty2 + omodel_View.HSourceQty;
                                sRemQty2 = sRelQty - sSumQty2;
                                if (i > 0 && (sWHID != DBUtility.ClsPub.isLong(dsSource.Tables[0].Rows[i]["HWhID"]) || sSPID != DBUtility.ClsPub.isLong(dsSource.Tables[0].Rows[i]["HSPID"])))
                                {
                                    sErrMsg = "同时启用了获取源单子表仓库仓位、存在多行相同物料时自动拆分换行功能,但源单中相同物料对应仓库仓位不同,同一条码无法分配给多个仓库仓位,请选择仓库仓位后再扫码!";
                                    return null;
                                }
                                sWHID = DBUtility.ClsPub.isLong(dsSource.Tables[0].Rows[i]["HWhID"]);
                                sSPID = DBUtility.ClsPub.isLong(dsSource.Tables[0].Rows[i]["HSPID"]);
                                if (sRemQty2 <= 0)
                                {
                                    break;
                                }
                                sErrMsg = "同时启用了获取源单子表仓库仓位、存在多行相同物料时自动拆分换行功能,但源单中相同物料对应仓库仓位不同,同一条码无法分配给多个仓库仓位,请选择仓库仓位后再扫码!";
                                return null;
                            }
                            HWhID = omodel_View.HWHID;
                            HSPID = omodel_View.HSPID;
                            sWHID = DBUtility.ClsPub.isLong(dsSource.Tables[0].Rows[i]["HWhID"]);
                            sSPID = DBUtility.ClsPub.isLong(dsSource.Tables[0].Rows[i]["HSPID"]);
                            if (sRemQty2 <= 0)
                            {
                                break;
                            }
                        }
                    }
                }