예제 #1
0
        public ActionResult AdPrftOLss(String wmsno, String barcode, String gdsid, String gdstype, String bthno, String vlddat, double qty, String rsn)
        {
            //检查单号是否存在
            var qrymst = from e in WmsDc.wms_cang_111
                         where e.wmsno == wmsno &&
                         e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS &&
                         qus.Contains(e.qu.Trim())
                         select e;
            var arrqrymst = qrymst.ToArray();
            var qrydtl    = from e in WmsDc.wms_cangdtl_111
                            where e.wmsno == wmsno &&
                            e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS
                            orderby e.rcdidx descending
                            select e;
            var arrqrydtl = qrydtl.ToArray();

            //单据是否找到
            if (arrqrymst.Length <= 0)
            {
                return(RNoData("N0118"));
            }
            //判断分区是否有效
            if (!IsExistBarcode(barcode))
            {
                return(RInfo("I0204", barcode.Trim()));
            }

            //检查是否有数据权限
            wms_cang_111 mst = arrqrymst[0];


            wms_cangdtl_111 dtl = new wms_cangdtl_111();

            dtl.wmsno   = wmsno;
            dtl.bllid   = WMSConst.BLL_TYPE_PROFITORLOSS;
            dtl.rcdidx  = arrqrydtl[0].rcdidx + 1;
            dtl.barcode = barcode;
            dtl.gdsid   = gdsid;
            dtl.gdstype = gdstype;
            dtl.pkgid   = "01";
            double fQty = Math.Round(qty, 4, MidpointRounding.AwayFromZero);

            dtl.qty     = fQty;
            dtl.preqty  = fQty;
            dtl.pkgqty  = fQty;
            dtl.gdstype = gdstype;
            dtl.bthno   = string.IsNullOrEmpty(bthno) ? "1" : bthno;
            dtl.vlddat  = string.IsNullOrEmpty(vlddat) ? GetCurrentDay() : vlddat;
            JsonResult    jr = (JsonResult)GetBcdByGdsid(gdsid);
            ResultMessage rm = (ResultMessage)jr.Data;

            if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
            {
                return(RInfo("I0214", gdsid));
            }
            bcd[] b = (bcd[])rm.ResultObject;
            dtl.bcd    = b[0].bcd1;
            dtl.bkr    = "";
            dtl.bokflg = GetN();
            dtl.bokdat = GetCurrentDate();
            dtl.brfdtl = rsn.ToString();

            WmsDc.wms_cangdtl_111.InsertOnSubmit(dtl);

            //正在生成拣货单,请稍候重试
            if (mst.times.Trim() == "-")
            {
                string quRetrv = mst.qu;
                if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                {
                    return(RInfo("I0205"));
                }
            }

            if (!qus.Contains(mst.qu))
            {
                return(RInfo("I0206"));
            }

            //检查单号是否已经审核
            if (mst != null && mst.chkflg == GetY())
            {
                return(RInfo("I0207"));
            }
            //是否是本人制单
            if (!IsSameLogin(mst.mkr))
            {
                return(RInfo("I0208"));
            }
            //判断商品是否已经再单据里面
            int iHasIn = qrydtl.Where(e => e.gdsid == gdsid && e.gdstype == gdstype && e.barcode == barcode && e.bthno == dtl.bthno.Trim() && e.vlddat == dtl.vlddat.Trim()).Count();

            if (iHasIn > 0)
            {
                return(RInfo("I0209", gdsid));
            }
            //如果是报损,判断是否有库存
            if (mst.times.Trim() == "-")
            {
                if (rsn.Trim() == "")
                {
                    return(RInfo("I0210", gdsid));
                }

                //如果是报损,判断是否有库存
                //得到一个商品的库存数量
                GdsInBarcode[] gb = GetAGdsQtyInBarcode(barcode, gdsid, gdstype)
                                    .Where(e => e.vlddat == vlddat.Trim() && e.bthno == bthno.Trim())
                                    .ToArray();
                double bqty  = (gb == null || gb.Length <= 0) ? 0 : gb[0].sqty;
                double ktqty = bqty;      //可调数量 = 库存数量
                //如果 需调整数量 > 可调数量
                if (Math.Abs(qty) > Math.Abs(ktqty))
                {
                    return(RInfo("I0211", qty, ktqty));
                }
                //return RInfo( "I0212",gdsid ,barcode  );
            }



            //判断gdsid和barcode是不是在一个区
            String[] qu = GetQuByGdsid(gdsid, LoginInfo.DefStoreid);
            if (!qu.Contains(barcode.Substring(0, 2)))
            {
                return(RInfo("I0213", gdsid, String.Join(",", qu)));
            }



            try
            {
                WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0207"));
                }
                WmsDc.SubmitChanges();

                //修改主单时间戳
                string sql  = @"update wms_cang_111 set bllid='111' where wmsno='" + mst.wmsno + "' and bllid='111' and udtdtm={0}";
                int    iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm);
                if (iEff == 0)
                {
                    return(RInfo("I0207"));
                }

                return(RSucc("成功", dtl, "S0103"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0026"));
            }
        }
예제 #2
0
        private ActionResult _MakeParam(String wmsno, String oldbarcodes, String gdsids, String gdstypes, String bthnos, String vlddats, String qtys, String rsns)
        {
            String[] oldbarcode = oldbarcodes.Split(',');
            String[] gdsid      = gdsids.Split(',');
            String[] qty        = qtys.Split(',');
            String[] gdstype    = gdstypes.Split(',');
            String[] vlddat     = vlddats.Split(',');
            String[] bthno      = bthnos.Split(',');
            String[] rsn        = rsns.Split(',');
            //String[] newsbarcode = newbarcodes.Split(',');
            List <wms_cangdtl_111> lstDtl = new List <wms_cangdtl_111>();

            if ((oldbarcode.Length != gdsid.Length) &&
                (oldbarcode.Length != qty.Length) &&
                (oldbarcode.Length != gdstype.Length) &&
                (oldbarcode.Length != rsn.Length))
            {
                return(RInfo("I0173"));
            }
            int i = 0;

            foreach (String s in oldbarcode)
            {
                if (!String.IsNullOrEmpty(s))
                {
                    //判断gdsid和barcode是不是在一个区
                    String[] qu = GetQuByGdsid(gdsid[i], LoginInfo.DefStoreid);
                    if (qu == null)
                    {
                        return(RInfo("I0174"));
                    }
                    if (!qu.Contains(s.Substring(0, 2)))
                    {
                        return(RInfo("I0176", gdsid[i], String.Join(",", qu)));
                    }
                    //判断分区是否有效
                    if (!IsExistBarcode(s))
                    {
                        return(RInfo("I0177", s.Trim()));
                    }

                    wms_cangdtl_111 dtl = new wms_cangdtl_111();
                    dtl.wmsno   = wmsno;
                    dtl.bllid   = WMSConst.BLL_TYPE_PROFITORLOSS;
                    dtl.rcdidx  = i + 1;
                    dtl.barcode = s;
                    //判断分区是否有效
                    if (!IsExistBarcode(dtl.barcode))
                    {
                        return(RInfo("I0178", s.Trim()));
                    }
                    dtl.gdsid   = gdsid[i];
                    dtl.gdstype = gdstype[i];
                    dtl.pkgid   = "01";
                    double fQty = 0;
                    if (!double.TryParse(qty[i], out fQty))
                    {
                        return(RInfo("I0179", gdsid[i], qty[i]));
                    }
                    dtl.qty     = Math.Round(fQty, 4, MidpointRounding.AwayFromZero);
                    dtl.preqty  = Math.Round(fQty, 4, MidpointRounding.AwayFromZero);
                    dtl.pkgqty  = Math.Round(fQty, 4, MidpointRounding.AwayFromZero);
                    dtl.gdstype = gdstype[i];
                    dtl.bthno   = String.IsNullOrEmpty(bthno[i]) ? "1" : bthno[i];
                    dtl.vlddat  = String.IsNullOrEmpty(vlddat[i]) ? GetCurrentDay() : vlddat[i];
                    JsonResult    jr = (JsonResult)GetBcdByGdsid(gdsid[i]);
                    ResultMessage rm = (ResultMessage)jr.Data;
                    if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                    {
                        return(RInfo("I0180", gdsid[i]));
                    }
                    bcd[] b = (bcd[])rm.ResultObject;
                    dtl.bcd    = b[0].bcd1;
                    dtl.bkr    = "";
                    dtl.bokflg = GetN();
                    dtl.bokdat = GetCurrentDate();
                    dtl.brfdtl = rsn[i];


                    lstDtl.Add(dtl);
                    i++;
                }
            }

            return(RSucc("成功", lstDtl.ToArray(), "S0096"));
        }
예제 #3
0
        /// <summary>
        /// 修改损溢单
        /// </summary>
        /// <param name="wmsno"></param>
        /// <param name="gdsid"></param>
        /// <param name="gdstype"></param>
        /// <param name="newbarcode">新仓位码</param>
        /// <param name="rcdidx"></param>
        /// <param name="qty"></param>
        /// <returns></returns>
        public ActionResult MdAPrftOLss(String wmsno, String gdsid, String newbarcode, String gdstype, int rcdidx, double qty, String rsn)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //检查单号是否存在
                var qrymst = from e in WmsDc.wms_cang_111
                             where e.wmsno == wmsno &&
                             e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS &&
                             qus.Contains(e.qu.Trim())
                             select e;
                var arrqrymst = qrymst.ToArray();
                var qrydtl    = from e in WmsDc.wms_cangdtl_111
                                where e.wmsno == wmsno &&
                                e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS &&
                                e.gdsid == gdsid && e.rcdidx == rcdidx
                                orderby e.rcdidx descending
                                select e;
                var arrqrydtl = qrydtl.ToArray();

                //检查barcode是否有效
                if (!IsExistBarcode(newbarcode))
                {
                    return(RInfo("I0191", newbarcode));
                }

                //单据是否找到
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0116"));
                }
                //检查是否有数据权限
                wms_cang_111 mst = arrqrymst[0];
                //正在生成拣货单,请稍候重试 ,如果是报损
                if (mst.times.Trim() == "-")
                {
                    string quRetrv = mst.qu;
                    if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                    {
                        return(RInfo("I0192"));
                    }
                }

                if (!qus.Contains(mst.qu.Trim()))
                {
                    return(RInfo("I0193"));
                }
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0194"));
                }
                //未找到该商品
                if (arrqrydtl.Length <= 0)
                {
                    return(RNoData("N0117"));
                }
                //是否是本人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0195"));
                }

                //判断QTY应该为正为负数
                if (mst.times.Trim() == "+" && qty < 0)
                {
                    return(RInfo("I0196"));
                }
                if (mst.times.Trim() == "-" && qty > 0)
                {
                    return(RInfo("I0197"));
                }
                if (mst.times.Trim() == "-" && rsn.Trim() == "")
                {
                    return(RInfo("I0198", gdsid));
                }

                //判断新仓位码是否和主单是一个区
                if (mst.qu.Trim() != newbarcode.Substring(0, 2))
                {
                    return(RInfo("I0199"));
                }

                //修改数量
                arrqrydtl[0].barcode = newbarcode;
                arrqrydtl[0].qty     = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                arrqrydtl[0].pkgqty  = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                arrqrydtl[0].preqty  = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                if (!String.IsNullOrEmpty(gdstype))
                {
                    arrqrydtl[0].gdstype = gdstype;
                }



                //如果是报损,判断是否有库存
                if (mst.times.Trim() == "-")
                {
                    //修改数量
                    wms_cangdtl_111 dtl = arrqrydtl[0];

                    //得到一个商品的库存数量
                    GdsInBarcode[] gb = GetAGdsQtyInBarcode(dtl.barcode, gdsid, dtl.gdstype)
                                        .Where(e => e.vlddat == dtl.vlddat.Trim() && e.bthno == dtl.bthno.Trim())
                                        .ToArray();
                    double bqty  = (gb == null || gb.Length <= 0) ? 0 : gb[0].sqty;
                    double ktqty = Math.Abs(bqty) + Math.Abs(dtl.qty);  //可调数量 = 库存数量+本单该商品的数量
                    //如果 需调整数量 > 可调数量
                    if (Math.Abs(qty) > Math.Abs(ktqty))
                    {
                        return(RInfo("I0200", qty, ktqty));
                    }

                    dtl.brfdtl = rsn.ToString();
                    //return RInfo( "I0201",gdsid ,arrqrydtl[0].barcode  );
                }

                try
                {
                    WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                    //检查单号是否已经审核
                    if (mst != null && mst.chkflg == GetY())
                    {
                        return(RInfo("I0207"));
                    }

                    WmsDc.SubmitChanges();

                    //修改主单时间戳
                    string sql  = @"update wms_cang_111 set bllid='111' where wmsno='" + mst.wmsno + "' and bllid='111' and udtdtm={0}";
                    int    iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm);
                    if (iEff == 0)
                    {
                        return(RInfo("I0207"));
                    }


                    scop.Complete();
                    return(RSucc("成功", arrqrydtl[0], "S0101"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0025"));
                }
            }
        }
예제 #4
0
        /// <summary>
        /// 修改损溢单
        /// </summary>
        /// <param name="wmsno"></param>
        /// <param name="gdsid"></param>
        /// <param name="gdstype"></param>
        /// <param name="newbarcode">新仓位码</param>
        /// <param name="rcdidx"></param>
        /// <param name="qty"></param>
        /// <returns></returns>
        public ActionResult MdAPrftOLss(String wmsno, String gdsid, String newbarcode, String gdstype, int rcdidx, double qty, String rsn)
        {
            //检查单号是否存在
            var qrymst = from e in WmsDc.wms_cang_111
                         where e.wmsno == wmsno &&
                         e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS &&
                         qus.Contains(e.qu.Trim())
                         select e;
            var arrqrymst = qrymst.ToArray();
            var qrydtl    = from e in WmsDc.wms_cangdtl_111
                            where e.wmsno == wmsno &&
                            e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS &&
                            e.gdsid == gdsid && e.rcdidx == rcdidx
                            orderby e.rcdidx descending
                            select e;
            var arrqrydtl = qrydtl.ToArray();

            //检查barcode是否有效
            if (!IsExistBarcode(newbarcode))
            {
                return(RInfo("I0191", newbarcode));
            }

            //单据是否找到
            if (arrqrymst.Length <= 0)
            {
                return(RNoData("N0116"));
            }
            //检查是否有数据权限
            wms_cang_111 mst = arrqrymst[0];
            //正在生成拣货单,请稍候重试
            string quRetrv = mst.qu;

            if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
            {
                return(RInfo("I0192"));
            }

            if (!qus.Contains(mst.qu.Trim()))
            {
                return(RInfo("I0193"));
            }
            //检查单号是否已经审核
            if (mst.chkflg == GetY())
            {
                return(RInfo("I0194"));
            }
            //未找到该商品
            if (arrqrydtl.Length <= 0)
            {
                return(RNoData("N0117"));
            }
            //是否是本人制单
            if (!IsSameLogin(mst.mkr))
            {
                return(RInfo("I0195"));
            }

            //判断QTY应该为正为负数
            if (mst.times.Trim() == "+" && qty < 0)
            {
                return(RInfo("I0196"));
            }
            if (mst.times.Trim() == "-" && qty > 0)
            {
                return(RInfo("I0197"));
            }
            if (mst.times.Trim() == "-" && rsn.Trim() == "")
            {
                return(RInfo("I0198", gdsid));
            }

            //判断新仓位码是否和主单是一个区
            if (mst.qu.Trim() != newbarcode.Substring(0, 2))
            {
                return(RInfo("I0199"));
            }

            //修改数量
            arrqrydtl[0].barcode = newbarcode;
            arrqrydtl[0].qty     = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
            arrqrydtl[0].pkgqty  = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
            arrqrydtl[0].preqty  = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
            if (!String.IsNullOrEmpty(gdstype))
            {
                arrqrydtl[0].gdstype = gdstype;
            }



            //如果是报损,判断是否有库存
            if (mst.times.Trim() == "-")
            {
                //修改数量
                wms_cangdtl_111 dtl = arrqrydtl[0];

                //得到一个商品的库存数量
                GdsInBarcode[] gb    = GetAGdsQtyInBarcode(dtl.barcode, gdsid, dtl.gdstype);
                double         bqty  = (gb == null || gb.Length <= 0) ? 0 : gb[0].sqty;
                double         ktqty = Math.Abs(bqty) + Math.Abs(dtl.qty); //可调数量 = 库存数量+本单该商品的数量
                //如果 需调整数量 > 可调数量
                if (Math.Abs(qty) > Math.Abs(ktqty))
                {
                    return(RInfo("I0200", qty, ktqty));
                }

                dtl.brfdtl = rsn.ToString();
                //return RInfo( "I0201",gdsid ,arrqrydtl[0].barcode  );
            }

            try
            {
                WmsDc.SubmitChanges();
                return(RSucc("成功", arrqrydtl[0], "S0101"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0025"));
            }
        }