Exemplo n.º 1
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"));
                }
            }
        }
        public ActionResult BokRetrieve(String wmsno)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                Rm.ResultObject = null;
                //检索捡货单主表、明细表
                var qrymst = from e in WmsDc.wms_cang
                             where e.bllid == WMSConst.BLL_TYPE_RETRIEVE &&
                             e.wmsno == wmsno
                             select e;
                var arrmst = qrymst.ToArray();
                var qrydtl = from e in WmsDc.wms_cangdtl
                             where e.bllid == WMSConst.BLL_TYPE_RETRIEVE &&
                             e.wmsno == wmsno
                             select e;
                var arrdtl = qrydtl.ToArray();

                #region 检查输入参数
                if (arrmst.Length <= 0)
                {
                    return(RNoData("N0250"));
                }
                if (arrdtl.Length <= 0)
                {
                    return(RNoData("N0251"));
                }
                wms_cang mst = arrmst[0];
                ////正在生成拣货单,请稍候重试
                //string quRetrv = mst.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo( "I0392" );
                //}
                foreach (wms_cangdtl d in arrdtl)
                {
                    //是否捡货单商品已经审核
                    if (d.bokflg == GetN() && d.tpcode == "y")
                    {
                        return(RInfo("I0462", d.gdsid));
                    }
                }
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0463"));
                }
                #endregion

                #region 播种单查询
                ////播种单主表,明细表
                var qrybzmst = from e in WmsDc.wms_bzmst
                               where e.bllid == WMSConst.BLL_TYPE_BZ &&
                               e.lnkbocidat == mst.lnkbocidat &&
                               e.lnkbocino == mst.lnkbocino &&
                               e.qu == mst.qu &&
                               e.savdptid == mst.savdptid
                               select e;
                var arrbzmst = qrybzmst.ToArray();
                if (arrbzmst.Length <= 0)
                {
                    return(RNoData("N0252"));
                }
                wms_bzmst bzmst = arrbzmst[0];
                //播种单明细表
                var qrybzdtl = from e in WmsDc.wms_bzdtl
                               where e.wmsno == bzmst.wmsno &&
                               arrdtl.Select(e1 => e1.gdsid).Contains(e.gdsid.Trim())
                               select e;
                wms_bzdtl[] arrbzdtls = qrybzdtl.ToArray();
                #endregion

                #region 差异数量生成捡货损溢单,记日志

                //差异数量生成捡货损溢单,记日志
                #region 差异数量生成捡货损溢单,记日志
                //生成捡货损溢单
                JsonResult jr = (JsonResult)MakeNewBllNo(this.LoginInfo.DefSavdptid, mst.qu, WMSConst.BLL_TYPE_RETRIEVE_PROFIT_LOSS, (bllno) =>
                {
                    //生成损溢单主表
                    wms_cang sycang   = new wms_cang();
                    sycang.wmsno      = bllno;
                    sycang.bllid      = WMSConst.BLL_TYPE_RETRIEVE_PROFIT_LOSS;
                    sycang.savdptid   = mst.savdptid;
                    sycang.prvid      = mst.prvid;
                    sycang.qu         = mst.qu;
                    sycang.rcvdptid   = mst.rcvdptid;
                    sycang.times      = mst.times;
                    sycang.lnkbocino  = mst.lnkbocino;
                    sycang.lnkbocidat = mst.lnkbocidat;
                    sycang.mkr        = LoginInfo.Usrid;
                    sycang.mkedat     = DateTime.Now.ToString("yyyyMMdd");
                    sycang.mkedat2    = GetCurrentDate();
                    sycang.ckr        = LoginInfo.Usrid;
                    sycang.chkflg     = GetY();
                    sycang.chkdat     = DateTime.Now.ToString("yyyyMMddHHmmss");
                    sycang.opr        = LoginInfo.Usrid;
                    sycang.brief      = "";
                    sycang.lnkbllid   = mst.bllid;
                    sycang.lnkno      = mst.wmsno;
                    sycang.lnkbrief   = mst.brief;

                    //生成损溢单明细
                    List <wms_cangdtl> lstsydtl = new List <wms_cangdtl>();
                    foreach (wms_cangdtl dt in arrdtl)
                    {
                        if (dt.qty != dt.preqty)
                        {
                            wms_cangdtl sydtl = new wms_cangdtl();
                            sydtl.wmsno       = bllno;
                            sydtl.bllid       = WMSConst.BLL_TYPE_RETRIEVE_PROFIT_LOSS;
                            sydtl.rcdidx      = dt.rcdidx;
                            sydtl.oldbarcode  = dt.oldbarcode;
                            sydtl.barcode     = dt.barcode;
                            sydtl.gdsid       = dt.gdsid;
                            sydtl.pkgid       = dt.pkgid;
                            sydtl.pkgqty      = dt.pkgqty;
                            sydtl.qty         = dt.preqty.Value - dt.qty;
                            sydtl.gdstype     = dt.gdstype;
                            sydtl.bthno       = dt.bthno;
                            sydtl.vlddat      = dt.vlddat;
                            sydtl.bcd         = dt.bcd;
                            sydtl.tpcode      = dt.tpcode;
                            sydtl.bkr         = LoginInfo.Usrid;
                            sydtl.bokflg      = GetY();
                            sydtl.bokdat      = DateTime.Now.ToString("yyyyMMddHHmmss");
                            sydtl.preqty      = dt.preqty.Value - dt.qty;
                            lstsydtl.Add(sydtl);
                            //记录日志
                            Log.i(LoginInfo.Usrid, Mdlid, bllno, WMSConst.BLL_TYPE_RETRIEVE_PROFIT_LOSS, "损溢单生成", dt.gdsid.Trim() + ":应收:" + dt.preqty.Value + ";实收:" + dt.qty, mst.qu, mst.savdptid);
                            //记账并删除为0的仓位信息。
                            var cwggdsbs = WmsDc.wms_cwgdsbs
                                           .Where(e => e.barcode == sydtl.barcode && e.bcd == sydtl.bcd && e.savdptid == mst.savdptid && e.gdsid == sydtl.gdsid && e.gdstype == sydtl.gdstype)
                                           .Select(e => e).Single();
                            if (cwggdsbs != null)
                            {
                                cwggdsbs.qty -= sydtl.qty;
                                if (cwggdsbs.qty <= 0)
                                {
                                    WmsDc.wms_cwgdsbs.DeleteOnSubmit(cwggdsbs);
                                    iDelCwgdsbs(new wms_cwgdsbs[] { cwggdsbs });
                                }
                            }
                        }
                    }
                    WmsDc.wms_cang.InsertOnSubmit(sycang);
                    WmsDc.wms_cangdtl.InsertAllOnSubmit(lstsydtl);


                    return(RRSucc("成功", null, "{{succ}}"));
                });


                Rm = (ResultMessage)jr.Data;
                if (Rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                {
                    return(jr);
                }
                #endregion


                //拣货数量和应拣数量判断是不是相等, 不相等就改播种单数量
                #region 拣货数量和应拣数量判断是不是相等, 不相等就改播种单数量
                var arrdtly = arrdtl
                              .Where(e => e.tpcode == "y")
                              .Select(e => new { e.gdsid, e.gdstype, e.qty });
                var arrdtln = arrdtl
                              .Where(e => e.tpcode == "n")
                              .Select(e => new { e.gdsid, e.gdstype, qty = 0.00 });
                var qsum = arrdtly.Union(arrdtln)
                           .GroupBy(g => new { g.gdsid, g.gdstype })
                           .Select(g => new { gdsid = g.Key.gdsid, gdstype = g.Key.gdstype, sumqty = g.Sum(e => e.qty) });
                foreach (var q in qsum)
                {
                    //查找播种明细商品汇总数量是否和捡货单的商品汇总数量一致
                    var qbzsum = arrbzdtls
                                 .Where(e => e.gdsid == q.gdsid && e.gdstype == q.gdstype)
                                 .GroupBy(g => new { g.gdsid, g.gdstype })
                                 .Select(g => new { gdsid = g.Key.gdsid, gdstype = g.Key.gdstype, qsum = g.Sum(e => e.qty) }).Single();
                    if (qbzsum.qsum < q.sumqty)    //如果数量不一致就生成捡货损溢单,并记日志
                    {
                        return(RInfo("I0464"));
                    }
                    else if (qbzsum.qsum >= q.sumqty)    //如果播种的数量小于捡货单的数量
                    {
                        double remainqty       = q.sumqty;
                        var    arrbzdtlsGdstyp = arrbzdtls.Where(e => e.gdstype == q.gdstype && e.gdsid == q.gdsid);
                        //-----------分派数量----------
                        //按照播种数量从大到小的顺序   |
                        //从小到大开始播种             |
                        //播种到最后就播0              |
                        //-----------------------------

                        /*String cmdsql = "declare @remainqty deciaml(18,4)\r\n"
                         + "declare @wmsno varchar(20), @gdstype varchar(20), @rcdidx int, @gdsid varchar(10), @rcvdptid varchar(10), @qty decimal\r\n"
                         + "set @remainqty={0}\r\n"
                         + "set @gdsid={1}\r\n"
                         + "set @gdstype={2}\r\n"
                         + "set @wmsno={3}\r\n"
                         + "declare cur1 cursor for\r\n"
                         + "    select rcvdptid, qty, rcdidx from wms_bzdtl where wmsno=@wmsno and gdstype=@gdstype and gdsid=@gdsid order by qty desc, rcdidx \r\n"
                         + "open cur1\r\n"
                         + "fetch next from cur1 into @rcvdptid, @qty, @rcdidx\r\n"
                         + "while @@fetch_status=0\r\n"
                         + "begin\r\n"
                         + "    if @remainqty-@qty>0\r\n"
                         + "    begin\r\n"
                         + "        update wms_bzdtl set qty = @qty where wmsno=@wmsno and gdstype=@gdstype and gdsid=@gdsid and rcdidx=@rcdidx\r\n"
                         + "    end\r\n"
                         + "    else if @remainqty>0 and @remainqty-@qty<=0\r\n"
                         + "    begin\r\n"
                         + "        update wms_bzdtl set qty = @remainqty where wmsno=@wmsno and gdstype=@gdstype and gdsid=@gdsid and rcdidx=@rcdidx\r\n"
                         + "    end\r\n"
                         + "    else\r\n"
                         + "    begin\r\n"
                         + "        update wms_bzdtl set qty = 0 where wmsno=@wmsno and gdstype=@gdstype and gdsid=@gdsid and rcdidx=@rcdidx\r\n"
                         + "    end\r\n"
                         + "    set @remainqty = @remainqty-@qty\r\n"
                         + "    fetch next from cur1 into @rcvdptid, @qty, @rcdidx\r\n"
                         + "end\r\n"
                         + "close cur1\r\n"
                         + "deallocate cur1";*/
                        /*
                         * preqty = preqty==null ? qty : preqty
                         *
                         * 公式:taxamt = qty*prc*taxrto
                         * amt = qty*prc
                         * salamt = qty*salprc
                         * patamt = qty*taxprc
                         * stotcstamt = qty*stotcstprc
                         *
                         */

                        String cmdsql = "";
                        if (mst.lnkbllid.Trim() == "206" || mst.lnkbllid.Trim() == "501")
                        {
                            cmdsql = "declare @remainqty deciaml(18,4)\r\n"
                                     + "declare @wmsno varchar(20), @gdstype varchar(20), @rcdidx int, @gdsid varchar(10), @rcvdptid varchar(10), @qty decimal, @stkouno varchar(30)\r\n"
                                     + "set @remainqty={0}\r\n"
                                     + "set @gdsid={1}\r\n"
                                     + "set @wmsno={2}\r\n"
                                     + "declare cur1 cursor for\r\n"
                                     + "    select b.rcvdptid, a.qty, a.rcdidx, b.stkouno from stkotdtl a inner join stkot b on a.stkouno=b.stkouno\r\n"
                                     + "          where b.wmsno=@wmsno and b.wmsbllid='" + WMSConst.BLL_TYPE_RETRIEVE + "' and a.gdsid=@gdsid order by qty desc, rcdidx \r\n"
                                     + "open cur1\r\n"
                                     + "fetch next from cur1 into @rcvdptid, @qty, @rcdidx, @stkouno\r\n"
                                     + "while @@fetch_status=0\r\n"
                                     + "begin\r\n"
                                     + "     update stkotdtl set preqty=case when preqty is null then qty else preqty end where stkouno=@stkouno and wmsbllid='" + WMSConst.BLL_TYPE_RETRIEVE + "' and gdsid=@gdsid and rcvidx=@rcvidx  \r\n"
                                     + "    if @remainqty-@qty>0\r\n"
                                     + "    begin\r\n"
                                     + "        update stkotdtl set qty = @qty where stkouno=@stkouno and gdsid=@gdsid and rcdidx=@rcdidx\r\n"
                                     + "    end\r\n"
                                     + "    else if @remainqty>0 and @remainqty-@qty<=0\r\n"
                                     + "    begin\r\n"
                                     + "        update stkotdtl set qty = @remainqty where stkouno=@stkouno and gdsid=@gdsid and rcdidx=@rcdidx\r\n"
                                     + "    end\r\n"
                                     + "    else\r\n"
                                     + "    begin\r\n"
                                     + "        update stkotdtl set qty = 0 where stkouno=@stkouno and gdsid=@gdsid and rcdidx=@rcdidx\r\n"
                                     + "    end\r\n"
                                     + "    update stkotdtl set amt=qty*prc, salamt=qty*salprc, patamt=qty*taxprc, stotcstamt=qty*stotcstprc where stkouno=@stkouno and gdsid=@gdsid and rcdidx=@rcdidx \r\n"
                                     + "    set @remainqty = @remainqty-@qty\r\n"
                                     + "    fetch next from cur1 into @rcvdptid, @qty, @rcdidx, @stkouno\r\n"
                                     + "end\r\n"
                                     + "close cur1\r\n"
                                     + "deallocate cur1";
                            WmsDc.ExecuteCommand(cmdsql, new object[] { remainqty, q.gdsid, bzmst.wmsno });
                        }
                    }
                }
                #endregion

                #endregion

                #region 修改审核标记
                //修改审核标记
                mst.chkflg = GetY();
                mst.chkdat = DateTime.Now.ToString("yyyyMMddHHmmss");
                mst.ckr    = LoginInfo.Usrid;
                #endregion

                try
                {
                    WmsDc.SubmitChanges();
                    return(RSucc("成功", null, "S0225"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0073"));
                }
            }
        }
Exemplo n.º 3
0
        public ActionResult DlPrftOLssBllDtl(String wmsno, String gdsid, int rcdidx)
        {
            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.gdsid == gdsid && e.rcdidx == rcdidx
                                && e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS
                                select e;
                var arrqrydtl  = qrydtl.ToArray();
                var arrqrydtl1 = qrydtl.Where(e => e.gdsid == gdsid && e.rcdidx == rcdidx).ToArray();
                //单据是否找到
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0114"));
                }
                //检查是否有数据权限
                wms_cang_111 mst = arrqrymst[0];

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

                if (!qus.Contains(mst.qu.Trim()))
                {
                    return(RInfo("I0184"));
                }
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0185"));
                }
                //是否是本人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0186"));
                }
                //删除单据明细
                int iDtlCnt = arrqrydtl.Length;
                WmsDc.wms_cangdtl_111.DeleteAllOnSubmit(arrqrydtl1);
                iDelCangDtl111(arrqrydtl1, mst);
                if (iDtlCnt == 1)
                {
                    WmsDc.wms_cang_111.DeleteAllOnSubmit(arrqrymst);
                    iDelCangMst111(mst);
                }
                //删除主单据
                try
                {
                    //检查单号是否已经审核
                    if (mst != null && mst.chkflg == GetY())
                    {
                        return(RInfo("I0207"));
                    }

                    WmsDc.SubmitChanges();

                    if (iDtlCnt > 1)
                    {
                        //修改主单时间戳
                        //WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                        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"));
                        }
                    }

                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("成功", null, "S0099"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0023"));
                }
            }
        }
Exemplo n.º 4
0
        public ActionResult GenerateRecievBll(String odrno)
        {
            stkin mst = GetMst(odrno);

            if (mst == null)
            {
                return(RNoData("N0030"));
            }
            ////正在生成拣货单,请稍候重试
            string quRetrv = GetQuByDptid(mst.dptid, LoginInfo.DefStoreid);
            //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
            //{
            //    return RInfo( "I0051" );
            //}
            //2.查看内调单据是否已经转过为收货单
            var qryshd = from e in WmsDc.wms_bllmst
                         where e.bllid == WMSConst.BLL_TYPE_REVIECEBLL &&
                         e.lnknewno == odrno && e.lnknewbllid == WMSConst.BLL_TYPE_INNERADJ
                         select e;

            if (qryshd.Count() > 0)
            {
                return(RInfo("I0052"));
            }

            return(MakeNewBllNo(
                       mst.savdptid,
                       quRetrv,
                       WMSConst.BLL_TYPE_REVIECEBLL,
                       ((bllno) =>
            {
                var odr = mst;
                //修改转单标记
                String sNow = DateTime.Now.ToString("yyyyMMdd");
                String cmd = "update stkin set inzdflg='" + GetY() + "',inzddat={0}, inwmsno={1}, inwmsbllid={2} where stkinno={3}";
                WmsDc.ExecuteCommand(cmd, new[] { sNow, bllno, WMSConst.BLL_TYPE_INNERADJ, odrno });

                //===================== 生成一张新的收货单 =====================
                //--------------------- 1.生成主单 -----------------------------
                wms_bllmst bllmst = new wms_bllmst();
                bllmst.wmsno = bllno;
                bllmst.hndbllno = odr.hndbllno;
                bllmst.bllid = WMSConst.BLL_TYPE_REVIECEBLL;
                bllmst.prvid = odr.savdptid;
                bllmst.savdptid = odr.savdptid;
                //得到登录仓库所在部门的区位码
                GetRealteQuResult realte = GetRealteQu(odr.dptid, odr.savdptid);
                bllmst.qu = realte.qu;

                /*bllmst.tongdao = odr.mst.tongdao;
                 * bllmst.huojia = odr.mst.huojia;*/
                bllmst.odrdat = odr.mkedat;
                bllmst.arvdat = odr.mkedat;
                bllmst.mkr = LoginInfo.Usrid;
                bllmst.mkedat = GetCurrentDate();
                bllmst.ckr = "";
                bllmst.chkflg = GetN();
                bllmst.chkdat = "";
                bllmst.opr = LoginInfo.Usrid;
                bllmst.brief = odr.brief;
                bllmst.lnknewbllid = odr.bllid;
                bllmst.lnknewno = odr.stkinno;
                bllmst.lnknewbrief = odr.brief;
                this.WmsDc.wms_bllmst.InsertOnSubmit(bllmst);
                //--------------------- 2.生成明细 -----------------------------
                List <wms_blldtl> blldtls = new List <wms_blldtl>();
                List <WmsBllGds> gdss = new List <WmsBllGds>();
                foreach (var dtl in odr.stkindtl)
                {
                    wms_blldtl blldtl = new wms_blldtl();
                    blldtl.wmsno = bllmst.wmsno;
                    blldtl.bllid = bllmst.bllid;
                    blldtl.rcdidx = dtl.rcdidx;
                    blldtl.barcode = "";
                    blldtl.gdsid = dtl.gdsid;
                    blldtl.pkgid = "01";       //dtl.pkgid;
                    blldtl.qty = 0;
                    blldtl.preqty = Math.Round(dtl.qty, 4, MidpointRounding.AwayFromZero);
                    blldtl.gdstype = WMSConst.GDS_TYPE_NORMAL;
                    blldtl.bthno = string.IsNullOrEmpty(dtl.bthno) ? "1" : dtl.bthno;
                    blldtl.vlddat = string.IsNullOrEmpty(dtl.vlddat) ? GetCurrentDay() : dtl.vlddat;
                    blldtl.bcd = dtl.bcd == null ? "" : dtl.bcd;
                    blldtl.prvid = bllmst.prvid == null ? "" : dtl.prvid;
                    blldtl.bkr = "";
                    blldtl.bokflg = GetN();
                    blldtl.bokdat = GetCurrentDate();
                    blldtl.brief = "";

                    WmsBllGds gds = WmsDc.gds
                                    .Where(e => e.gdsid == dtl.gdsid)
                                    .Select(e => new WmsBllGds
                    {
                        gdsid = e.gdsid.Trim(),
                        gdsdes = e.gdsdes.Trim(),
                        spc = e.spc.Trim(),
                        bsepkg = e.bsepkg.Trim()
                    }).Single();
                    gdss.Add(gds);

                    blldtls.Add(blldtl);
                }
                this.WmsDc.wms_blldtl.InsertAllOnSubmit(blldtls);
                //===================== 生成一张新的收货单 =====================

                try
                {
                    var dtlstmp = (from e in blldtls
                                   join e1 in gdss on e.gdsid.Trim() equals e1.gdsid.Trim()
                                   select new
                    {
                        e.wmsno,
                        e.vlddat,
                        e.rcdidx,
                        e.qty,
                        e.prvid,
                        e.preqty,
                        e.pkgid,
                        e.gdstype,
                        e.gdsid,
                        e.brief,
                        e.bokflg,
                        e.bokdat,
                        e.bllid,
                        e.bkr,
                        e.bcd,
                        e.barcode,
                        e1.gdsdes,
                        e1.spc,
                        e1.bsepkg
                    }
                                   ).ToArray();
                    Wmsbll obj = new Wmsbll
                    {
                        mst = bllmst,
                        dptdes = (from e in WmsDc.dpt
                                  where e.dptid == odr.dptid.Trim()
                                  select e.dptdes).Single(),
                        prv = null,
                        dtl = blldtls.ToArray(),
                        gds = gdss.ToArray(),
                        dtls = dtlstmp
                    };

                    //obj = ((Wmsbll)Rm.ResultObject);
                    var objrm = new
                    {
                        obj.mst.arvdat,
                        obj.mst.bllid,
                        obj.mst.brief,
                        obj.mst.chkdat,
                        obj.mst.chkflg,
                        obj.mst.ckr,
                        obj.mst.hndbllno,
                        obj.mst.huojia,
                        obj.mst.lnknewbllid,
                        obj.mst.lnknewbrief,
                        obj.mst.lnknewno,
                        obj.mst.mkedat,
                        obj.mst.mkr,
                        obj.mst.odrdat,
                        obj.mst.opr,
                        obj.mst.prvid,
                        obj.mst.qu,
                        obj.mst.savdptid,
                        obj.mst.tongdao,
                        obj.mst.wmsno,
                        prvdes = "",    //obj.prv.prvdes,
                        obj.dptdes
                    };
                    Rm.ResultObject = objrm;

                    return Rm;
                }
                catch (Exception ex)
                {
                    return RRErr(ex.Message, "E0057");
                }
            })));
        }
Exemplo n.º 5
0
        public ActionResult BokReciev(String wmsno)
        {
            var qry = from e in WmsDc.wms_bllmst
                      where e.bllid == WMSConst.BLL_TYPE_REVIECEBLL &&
                      e.wmsno == wmsno
                      select e;
            var arrqry = qry.ToArray();

            if (arrqry.Length <= 0)
            {
                return(RNoData("N0031"));
            }
            wms_bllmst bllmst = arrqry[0];

            #region 判断收货单是否已经登帐
            if (bllmst.chkflg == GetY())
            {
                return(RInfo("I0053", wmsno));
            }
            #endregion

            #region 判断操作员是否有审核该单据的权限
            //0.判断操作员是否有审核该单据的权限
            if (!this.qus.Contains(bllmst.qu.Trim()))
            {
                return(RInfo("I0054"));
            }
            #endregion

            #region 是否该单据下的所有商品都已经审核
            //1.是否该单据下的所有商品都已经审核
            var qry1 = from e in WmsDc.wms_blldtl
                       where e.bllid == WMSConst.BLL_TYPE_REVIECEBLL &&
                       e.wmsno == wmsno
                       select e;
            var arrqry1 = qry1.ToArray();
            if (arrqry1.Length <= 0)
            {
                return(RNoData("N0032"));
            }
            foreach (wms_blldtl dtl in arrqry1)
            {
                if (dtl.bokflg == GetN())
                {
                    return(RInfo("I0055", dtl.gdsid));
                }
            }
            #endregion

            var qrytp = from e in WmsDc.wms_blltp
                        where e.wmsno == wmsno &&
                        e.bllid == WMSConst.BLL_TYPE_REVIECEBLL
                        orderby e.tpcode, e.rcdidxtp
            select e;
            wms_bllmst   rmst = arrqry[0];
            wms_blldtl[] rdtl = arrqry1;

            return(MakeNewBllNo(
                       bllmst.savdptid, rmst.qu,
                       WMSConst.BLL_TYPE_UPBLL, (bllno) =>
            {
                #region 修改内调单实收数量
                //判断是否有比应收数量更大的商品
                var qrytpdtl = from e in WmsDc.wms_blltp
                               where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_REVIECEBLL
                               group e by new { e.wmsno, e.gdsid } into g
                select new
                {
                    wmsno = g.Key.wmsno,
                    gdsid = g.Key.gdsid,
                    qty = g.Sum(e1 => e1.qty)
                };
                var qryodrdtl = from e in WmsDc.stkindtl
                                join e1 in WmsDc.wms_bllmst on new { e.stkinno, e.stkin.bllid } equals new { stkinno = e1.lnknewno, bllid = e1.lnknewbllid }
                join e2 in qrytpdtl on new { e1.wmsno, e.gdsid } equals new { e2.wmsno, e2.gdsid }
                where e1.wmsno == wmsno && e1.bllid == WMSConst.BLL_TYPE_REVIECEBLL && e.qty < e2.qty
                select e;
                var arrqryodrdtl = qryodrdtl.ToArray();
                if (arrqryodrdtl.Length > 0)
                {
                    return RRInfo("I0428", arrqryodrdtl[0].gdsid);
                }
                StringBuilder sb = new StringBuilder();
                String cmdsql = null;
                //修改内调单实收数量

                /*cmdsql = "update odrdtl set preqty=qty, qty=b.sumqty, pkgqty=b.sumqty, amt=convert(decimal(18,2),round(a.prc*b.sumqty, 4)), patamt=convert(decimal(18,2),round(a.taxprc*b.sumqty, 4)), taxamt=convert(decimal(18,2),round((a.taxprc*b.sumqty)-a.prc*b.sumqty, 4))   from "
                 + " odrdtl a "
                 + " inner join "
                 + " ( "
                 + " select a1.wmsno, a1.gdsid, sum(a1.qty) sumqty ,b1.lnknewno from wms_blltp a1 "
                 + "    inner join wms_bllmst b1 on a1.wmsno=b1.wmsno and a1.bllid=b1.bllid"
                 + " where b1.wmsno={0} and b1.bllid={1}"
                 + " group by a1.wmsno, a1.gdsid, b1.lnknewno	"
                 + " ) b on a.odrno=b.lnknewno and a.gdsid=b.gdsid ";
                 + sb.Append(cmdsql);
                 */
                //设置收货单审核标志
                cmdsql = "update wms_bllmst set chkflg='" + GetY() + "', ckr={0}, chkdat={1} where wmsno={2} and bllid={3} ";
                sb.Append(cmdsql);
                //设置内购单收货标志
                cmdsql = "update stkin set inflg='" + GetY() + "', indat={4} from stkin a inner join wms_bllmst b on b.lnknewno=a.stkinno and b.lnknewbllid=a.bllid where b.wmsno={5} and b.bllid={6} ";
                sb.Append(cmdsql);

                //执行处理
                string sNow = GetCurrentDate();
                WmsDc.ExecuteCommand(sb.ToString(), new[] { LoginInfo.Usrid, sNow, wmsno, WMSConst.BLL_TYPE_REVIECEBLL, sNow, wmsno, WMSConst.BLL_TYPE_REVIECEBLL });

                WmsDc.SubmitChanges();
                #endregion

                #region 生成上架单
                //4.生成上架单
                //主表

                wms_cang cwmst = new wms_cang();
                List <wms_cangdtl> lstcwdtl = new List <wms_cangdtl>();
                cwmst.wmsno = bllno;
                cwmst.bllid = WMSConst.BLL_TYPE_UPBLL;
                cwmst.savdptid = rmst.savdptid;
                cwmst.prvid = rmst.prvid;
                cwmst.qu = rmst.qu;
                /*mst.rcvdptid = rmst.rcvdptid;*/

                /*mst.times = rmst.times;
                 * mst.lnkbocino = rmst.lnkbocino;
                 * mst.lnkbocidat = rmst.lnkbocidat;*/
                cwmst.mkr = LoginInfo.Usrid;
                cwmst.mkedat = DateTime.Now.ToString("yyyyMMdd");
                cwmst.mkedat2 = GetCurrentDate();
                /*mst.ckr = rmst.ckr;*/
                cwmst.ckr = "";
                cwmst.chkflg = GetN();
                cwmst.chkdat = "";
                cwmst.opr = LoginInfo.Usrid;
                cwmst.brief = rmst.brief;
                cwmst.lnkbllid = rmst.bllid;
                cwmst.lnkno = rmst.wmsno;
                cwmst.lnkbrief = rmst.brief;
                //明细
                var qrycwdtl = from e in qrytp
                               join e1 in WmsDc.wms_blldtl on new { e.wmsno, e.bllid, e.gdsid } equals new { e1.wmsno, e1.bllid, e1.gdsid }
                orderby e.rcdidx, e.rcdidxtp
                select new
                {
                    e,
                    e1
                };
                int i = 1;
                foreach (var tp in qrycwdtl)
                {
                    wms_cangdtl cwdtl = new wms_cangdtl();
                    cwdtl.wmsno = bllno;
                    cwdtl.bllid = WMSConst.BLL_TYPE_UPBLL;
                    cwdtl.rcdidx = i++;
                    cwdtl.oldbarcode = "";
                    cwdtl.barcode = tp.e.barcode;
                    cwdtl.gdsid = tp.e.gdsid;
                    cwdtl.pkgid = tp.e.pkgid;
                    cwdtl.pkgqty = tp.e.qty;
                    cwdtl.qty = Math.Round(tp.e.qty, 4, MidpointRounding.AwayFromZero);
                    cwdtl.gdstype = tp.e.gdstype;
                    cwdtl.bthno = string.IsNullOrEmpty(tp.e1.bthno) ? "1" : tp.e1.bthno;
                    cwdtl.vlddat = String.IsNullOrEmpty(tp.e1.vlddat) ? GetCurrentDay() : tp.e1.vlddat;
                    cwdtl.bcd = tp.e1.bcd;
                    cwdtl.tpcode = tp.e.tpcode;
                    cwdtl.barcode = "";
                    cwdtl.bkr = "";
                    cwdtl.bokflg = GetN();
                    cwdtl.bokdat = GetCurrentDate();
                    lstcwdtl.Add(cwdtl);
                }
                WmsDc.wms_cang.InsertOnSubmit(cwmst);
                WmsDc.wms_cangdtl.InsertAllOnSubmit(lstcwdtl);
                WmsDc.SubmitChanges();
                #endregion

                #region 推荐仓位

                /*String cmdsql1 = "declare @wmsno varchar(20) "
                 + " set @wmsno={0} "
                 + " exec SuggestBarcode @wmsno ";
                 + WmsDc.ExecuteCommand(cmdsql1, new[] { wmsno });*/
                WmsDc.SuggestBarcode(wmsno);
                #endregion
                try
                {
                    WmsDc.SubmitChanges();
                    return RRSucc("成功", null, "S0209");
                }
                catch (Exception ex)
                {
                    return RRErr(ex.Message, "E0058");
                }
            }));
        }
Exemplo n.º 6
0
        public ActionResult DlRetPrvBll(String wmsno)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //检查单号是否存在
                var qrymst = from e in WmsDc.wms_cang_110
                             where e.wmsno == wmsno &&
                             e.bllid == WMSConst.BLL_TYPE_RETPRV
                             select e;
                var arrqrymst = qrymst.ToArray();
                var qrydtl    = from e in WmsDc.wms_cangdtl_110
                                where e.wmsno == wmsno &&
                                e.bllid == WMSConst.BLL_TYPE_RETPRV
                                select e;
                var arrqrydtl = qrydtl.ToArray();
                int iDtlCount = arrqrydtl.Length;
                //单据是否找到
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0160"));
                }
                //检查是否有数据权限
                wms_cang_110 mst = arrqrymst[0];
                ////正在生成拣货单,请稍候重试
                //string quRetrv = mst.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo( "I0340" );
                //}
                if (!qus.Contains(mst.qu.Trim()))
                {
                    return(RInfo("I0341"));
                }
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0342"));
                }
                //是否是同一个人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0343", mst.mkr, LoginInfo.Usrid));
                }
                //删除单据明细
                WmsDc.wms_cangdtl_110.DeleteAllOnSubmit(arrqrydtl);
                WmsDc.wms_cang_110.DeleteAllOnSubmit(arrqrymst);
                iDelCangDtl110(arrqrydtl, mst);
                iDelCangMst110(arrqrymst[0]);
                //删除主单据
                try
                {
                    //WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                    //检查单号是否已经审核
                    if (mst != null && mst.chkflg == GetY())
                    {
                        return(RInfo("I0207"));
                    }

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

                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("成功", null, "S0151"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0045"));
                }
            }
        }
Exemplo n.º 7
0
        public ActionResult AdRetBll(String bllno, String dptid, String hndno, String gdsids, String qtys, String rsns)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                ////正在生成拣货单,请稍候重试
                //string quRetrv = GetQuByDptid(dptid, LoginInfo.DefStoreid);
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo("I0297");
                //}

                //检查是否有残损库权限
                if (String.IsNullOrEmpty(LoginInfo.DefCsSavdptid))
                {
                    return(RInfo("I0298"));
                }

                var qrymst = WmsDc.ExecuteQuery <wms_cang_109>("select * from wms_cang_109 with(updlock) where bllid={0} and wmsno={1} and mkr={2}",
                                                               WMSConst.BLL_TYPE_RETCANG, bllno, LoginInfo.Usrid);

                /*var qrymst = from e in WmsDc.wms_cang_109
                 *           where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG
                 *           && e.mkr == LoginInfo.Usrid
                 *           && qus.Contains(e.qu.Trim())
                 *           select e;*/
                var arrqrymst = qrymst.Where(e => qus.Contains(e.qu.Trim())).ToArray();
                var qrydtl    = from e in WmsDc.wms_cangdtl_109
                                where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG
                                select e;
                var arrqrydtl = qrydtl.ToArray();

                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0152"));
                }
                wms_cang_109 mst = arrqrymst[0];
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0299"));
                }
                //是否是本人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0300"));
                }


                //拆分货号,数量
                JsonResult    jr = (JsonResult)_MkParam(gdsids, qtys, rsns);
                ResultMessage rm = (ResultMessage)jr.Data;
                if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                {
                    return(jr);
                }
                List <ParamRetBll> param = null;
                param = (List <ParamRetBll>)rm.ResultObject;

                //检查录入的商品有没有相同记录
                var qrySameGds = from e in param
                                 group e by e.Gdsid into g
                                 where g.Count() > 1
                                 select g.Key;
                var arrQrySameGds = qrySameGds.ToArray();
                if (arrQrySameGds.Length > 0)
                {
                    return(RInfo("I0301", arrQrySameGds[0]));
                }


                //得到分区
                //GetRealteQuResult rq = GetRealteQu("all", LoginInfo.DefCsSavdptid);
                var gdsqus = (from e in WmsDc.gds
                              join e1 in WmsDc.wms_set on new { setid = "001", e.dptid } equals new { e1.setid, dptid = e1.val2.Trim() }
                              join e2 in WmsDc.wms_set on new { setid = "008", storeid = "2", savdptid = e1.val3 }     //残损库对应的区
                              equals new { e2.setid, storeid = e2.val2.Trim(), savdptid = e2.val1.Trim() }
                              where param.Select(ee => ee.Gdsid.Trim()).Contains(e.gdsid) &&
                              e2.val3 == LoginInfo.DefStoreid &&
                              e1.isvld == GetY() && e2.isvld == GetY() &&
                              thqus.Contains(e1.val1.Trim())
                              select new { qu = e1.val1.Trim() }
                              ).Distinct().ToArray();
                if (gdsqus.Length == 0 || gdsqus.Length > 1)
                {
                    return(RInfo("I0302"));
                }
                if (gdsqus[0].qu != mst.qu.Trim())
                {
                    return(RInfo("I0303", gdsqus[0].qu, mst.qu.Trim()));
                }



                //开始制单

                //生成明细单
                int i     = 0;
                var qrymx = from e in arrqrydtl
                            where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG
                            orderby e.rcdidx descending
                            select e;
                var arrqrymx = qrymx.ToArray();
                if (arrqrymx.Length > 0)
                {
                    i = arrqrymx[0].rcdidx;
                }
                List <wms_cangdtl_109> lstDtl = new List <wms_cangdtl_109>();
                foreach (ParamRetBll r in param)
                {
                    wms_cangdtl_109 dtl = new wms_cangdtl_109();
                    dtl.wmsno      = bllno;
                    dtl.bllid      = WMSConst.BLL_TYPE_RETCANG;
                    dtl.rcdidx     = i + 1;
                    dtl.oldbarcode = "";
                    wms_cangwei cw = GetBarcodeByGdsid(LoginInfo.DefCsSavdptid, r.Gdsid);
                    if (cw == null)
                    {
                        return(RInfo(r.Gdsid + ",推荐仓位为空", "I0304"));
                    }
                    dtl.barcode = cw.barcode;
                    dtl.gdsid   = r.Gdsid;
                    dtl.pkgid   = "01";
                    dtl.pkgqty  = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                    dtl.qty     = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                    dtl.gdstype = "95";
                    dtl.bthno   = "1";
                    dtl.vlddat  = GetCurrentDay();
                    dtl.bcd     = r.Bcd;
                    dtl.tpcode  = "";
                    dtl.bkr     = "";
                    dtl.bokflg  = GetN();
                    dtl.bokdat  = GetCurrentDate();
                    dtl.preqty  = null;
                    dtl.brfdtl  = r.Rsn.ToString();

                    //看看数据库有没有已加的商品
                    if (arrqrydtl.Length > 0)
                    {
                        var qryhasgds = from e in arrqrydtl
                                        where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG &&
                                        e.gdsid == dtl.gdsid
                                        select e;
                        foreach (var q in qryhasgds)
                        {
                            return(RInfo("I0305", q.gdsid));
                        }
                    }

                    lstDtl.Add(dtl);
                    //修改推荐仓位标志
                    i++;
                }

                WmsDc.wms_cangdtl_109.InsertAllOnSubmit(lstDtl);


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

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

                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("成功", null, "S0142"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0041"));
                }
            }
        }
Exemplo n.º 8
0
        public ActionResult MdRetPrvBll(String wmsno, String barcodes, String gdsids, String gdstypes, String bthnos, String vlddats, String qtys)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //拆分参数
                //检查并创建明细
                JsonResult    jr = (JsonResult)_MakeParam(wmsno, barcodes, gdsids, gdstypes, bthnos, vlddats, qtys);
                ResultMessage rm = (ResultMessage)jr.Data;
                if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                {
                    return(jr);
                }

                //检查单号是否存在

                /*var qrymst = from e in WmsDc.wms_cang_110
                 *           where e.wmsno == wmsno
                 *           && e.bllid == WMSConst.BLL_TYPE_RETPRV
                 *           select e;*/
                var qrymst    = WmsDc.ExecuteQuery <wms_cang_110>("select * from wms_cang_110 with(updlock) where wmsno={0} and bllid={1}", wmsno, WMSConst.BLL_TYPE_RETPRV);
                var arrqrymst = qrymst.ToArray();
                var qrydtl    = from e in WmsDc.wms_cangdtl_110
                                where e.wmsno == wmsno &&
                                e.bllid == WMSConst.BLL_TYPE_RETPRV
                                select e;
                var arrqrydtl = qrydtl.ToArray();
                //单据是否找到
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0164"));
                }
                //检查是否有数据权限
                wms_cang_110 mst = arrqrymst[0];
                ////正在生成拣货单,请稍候重试
                string quRetrv = mst.qu;
                if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                {
                    return(RInfo("I0360"));
                }

                if (!qus.Contains(mst.qu.Trim()))
                {
                    return(RInfo("I0361"));
                }
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0362"));
                }
                //是否是同一个人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0363", mst.mkr, LoginInfo.Usrid));
                }

                wms_cangdtl_110[] newdtl = (wms_cangdtl_110[])rm.ResultObject;
                if (mst.times.Trim() == "-")
                {
                    int i = 0;
                    //如果是报损,判断是否有库存
                    foreach (wms_cangdtl_110 d in newdtl)
                    {
                        //得到一个商品的库存数量
                        GdsInBarcode[] gb = GetAGdsQtyInBarcode(arrqrydtl[i].barcode, arrqrydtl[i].gdsid, arrqrydtl[i].gdstype)
                                            .Where(e => e.bthno.Trim() == arrqrydtl[i].bthno.Trim() && e.vlddat.Trim() == arrqrydtl[i].vlddat.Trim())
                                            .ToArray();
                        double bqty  = (gb == null || gb.Length <= 0) ? 0 : gb[0].sqty;
                        double ktqty = bqty + arrqrydtl[i].qty;  //可调数量 = 库存数量+本单该商品的数量
                        //如果 需调整数量 > 可调数量
                        if (d.qty > ktqty)
                        {
                            return(RInfo("I0364", d.qty, ktqty));
                        }
                        i++;
                    }
                }


                //删除单据明细
                WmsDc.wms_cangdtl_110.DeleteAllOnSubmit(arrqrydtl);
                iDelCangDtl110(arrqrydtl, mst);
                //增加单据明细
                WmsDc.wms_cangdtl_110.InsertAllOnSubmit(newdtl);

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

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

                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("成功", newdtl, "S0155"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0048"));
                }
            }
        }
Exemplo n.º 9
0
        public ActionResult MdRetBll(String bllno, String gdsids, String qtys, String rsns)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //拆分货号,数量
                JsonResult    jr = (JsonResult)_MkParam(gdsids, qtys, rsns);
                ResultMessage rm = (ResultMessage)jr.Data;
                if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                {
                    return(jr);
                }
                List <ParamRetBll> param = null;
                param = (List <ParamRetBll>)rm.ResultObject;

                //查询返仓单
                //查询返仓单主表
                var qrymst = WmsDc.ExecuteQuery <wms_cang_109>("select * from wms_cang_109 with(updlock) where bllid={0} and wmsno={1} and mkr={2}",
                                                               WMSConst.BLL_TYPE_RETCANG, bllno, LoginInfo.Usrid);

                /*var qrymst = from e in WmsDc.wms_cang_109
                 *           where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG
                 *           && e.mkr == LoginInfo.Usrid
                 *           && qus.Contains(e.qu.Trim())
                 *           select e;*/
                var arrqrymst = qrymst.Where(e => qus.Contains(e.qu.Trim())).ToArray();

                /*
                 * var qrymst = from e in WmsDc.wms_cang_109
                 *           where e.bllid == WMSConst.BLL_TYPE_RETCANG
                 *           && e.wmsno == bllno
                 *           && qus.Contains(e.qu.Trim())
                 *           select e;
                 * var arrqrymst = qrymst.ToArray();*/
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0155"));
                }
                wms_cang_109 mst = arrqrymst[0];
                ////正在生成拣货单,请稍候重试
                //string quRetrv = mst.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo("I0318");
                //}

                //查询返仓单明细
                var qrydtl = from e in WmsDc.wms_cangdtl_109
                             join e1 in qrymst on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid }
                select e;
                var    arrqrydtl = qrydtl.ToArray();
                if (arrqrydtl.Length <= 0)
                {
                    return(RNoData("N0156"));
                }

                //查询是不是本人操作
                if (mst.mkr.Trim() != LoginInfo.Usrid)
                {
                    return(RInfo("I0319"));
                }

                //查询是否有残损库权限
                if (mst.savdptid.Trim() != LoginInfo.DefCsSavdptid.Trim())
                {
                    return(RInfo("I0320"));
                }

                //返仓单是否已经审核,审核不允许修改
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0321"));
                }

                //插入单据明细
                //生成明细单
                int _i = 0;
                List <wms_cangdtl_109> lstDtl = new List <wms_cangdtl_109>();
                foreach (ParamRetBll r in param)
                {
                    wms_cangdtl_109 dtl = new wms_cangdtl_109();
                    dtl.wmsno      = bllno;
                    dtl.bllid      = WMSConst.BLL_TYPE_RETCANG;
                    dtl.rcdidx     = _i + 1;
                    dtl.oldbarcode = "";
                    wms_cangwei cw = GetBarcodeByGdsid(LoginInfo.DefCsSavdptid, r.Gdsid);
                    if (cw == null)
                    {
                        return(RInfo(r.Gdsid + ",推荐仓位为空", "I0322"));
                    }
                    dtl.barcode = cw.barcode;
                    dtl.gdsid   = r.Gdsid;
                    dtl.pkgid   = "01";
                    dtl.pkgqty  = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                    dtl.qty     = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                    dtl.gdstype = "95";
                    dtl.bthno   = "1";
                    dtl.vlddat  = GetCurrentDay();
                    dtl.bcd     = r.Bcd;
                    dtl.tpcode  = "";
                    dtl.bkr     = "";
                    dtl.bokflg  = GetN();
                    dtl.bokdat  = GetCurrentDate();
                    dtl.preqty  = null;
                    dtl.brfdtl  = r.Rsn.ToString();

                    lstDtl.Add(dtl);
                    _i++;
                }
                WmsDc.wms_cangdtl_109.DeleteAllOnSubmit(arrqrydtl);
                iDelCangDtl109(arrqrydtl, mst);

                if (lstDtl.Count > 0)
                {
                    WmsDc.wms_cangdtl_109.InsertAllOnSubmit(lstDtl);
                }
                else
                {
                    WmsDc.wms_cang_109.DeleteOnSubmit(mst);
                    iDelCangMst109(mst);
                }

                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_109 set bllid='109' where wmsno='" + mst.wmsno + "' and bllid='109' and udtdtm={0}";
                    int    iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm);
                    if (iEff == 0)
                    {
                        return(RInfo("I0207"));
                    }


                    scop.Complete();
                    return(RSucc("修改成功", null, "S0146"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0043"));
                }
            }
        }
Exemplo n.º 10
0
        public ActionResult GenerateRecievBll(String odrno)
        {
            String qu = GetQuByDptid(odrno, LoginInfo.DefStoreid);

            return(MakeNewBllNo(
                       LoginInfo.DefSavdptid,
                       qu,
                       WMSConst.BLL_TYPE_REVIECEBLL,
                       ((bllno) =>
            {
                //WmsDc.Transaction = WmsDc.Connection.BeginTransaction();
                var qry = from e in WmsDc.odr
                          where e.odrno == odrno &&
                          e.savdptid == LoginInfo.DefSavdptid &&
                          e.bllid == WMSConst.BLL_TYPE_PURCHASE &&
                          e.ordstu == (char)ORD_STATUS.AUDIT && e.zdflg == GetN()
                          select new
                {
                    mst = e,
                    dtl = from e1 in WmsDc.odrdtl
                          where e1.odrno == odrno
                          select e1
                };
                var arrqry = qry.ToArray();
                //1.未找到供应商采购订单
                if (arrqry.Count() <= 0)
                {
                    return RRInfo("I0443");
                }

                //2.查看采购单据是否已经转过为收货单
                var qryshd = from e in WmsDc.wms_bllmst
                             where e.bllid == WMSConst.BLL_TYPE_REVIECEBLL &&
                             e.lnknewno == odrno
                             select e;
                if (qryshd.Count() > 0)
                {
                    return RRInfo("I0444");
                }

                var odr = arrqry[0];
                //修改转单标记
                String sNow = DateTime.Now.ToString("yyyyMMdd");
                String cmd = "update odr set zdflg='" + GetY() + "',zddat={0} where odrno={1}";
                WmsDc.ExecuteCommand(cmd, new[] { sNow, odrno });



                //===================== 生成一张新的收货单 =====================
                //--------------------- 1.生成主单 -----------------------------
                wms_bllmst bllmst = new wms_bllmst();
                bllmst.wmsno = bllno;
                bllmst.hndbllno = odr.mst.hndbllno;
                bllmst.bllid = WMSConst.BLL_TYPE_REVIECEBLL;
                bllmst.prvid = odr.mst.prvid;
                bllmst.savdptid = odr.mst.savdptid;
                //得到登录仓库所在部门的区位码
                GetRealteQuResult realte = GetRealteQu(odr.mst.dptid, LoginInfo.DefSavdptid);
                bllmst.qu = realte.qu;
                ////正在生成拣货单,请稍候重试
                //string quRetrv = bllmst.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RRInfo( "I0225" );
                //}

                /*bllmst.tongdao = odr.mst.tongdao;
                 * bllmst.huojia = odr.mst.huojia;*/
                bllmst.odrdat = odr.mst.odrdat;
                bllmst.arvdat = odr.mst.arvdat;
                bllmst.mkr = LoginInfo.Usrid;
                bllmst.mkedat = DateTime.Now.ToString("yyyyMMddhhmmss");
                bllmst.ckr = "";
                bllmst.chkflg = GetN();
                bllmst.chkdat = "";
                bllmst.opr = LoginInfo.Usrid;
                bllmst.brief = odr.mst.brief;
                bllmst.lnknewbllid = odr.mst.bllid;
                bllmst.lnknewno = odr.mst.odrno;
                bllmst.lnknewbrief = odr.mst.brief;
                this.WmsDc.wms_bllmst.InsertOnSubmit(bllmst);
                //--------------------- 2.生成明细 -----------------------------
                List <wms_blldtl> blldtls = new List <wms_blldtl>();
                List <WmsBllGds> gdss = new List <WmsBllGds>();
                foreach (odrdtl dtl in odr.dtl)
                {
                    if (dtl.qty != 0)
                    {
                        wms_blldtl blldtl = new wms_blldtl();
                        blldtl.wmsno = bllmst.wmsno;
                        blldtl.bllid = bllmst.bllid;
                        blldtl.rcdidx = dtl.rcdidx;
                        blldtl.barcode = "";
                        blldtl.gdsid = dtl.gdsid;
                        blldtl.pkgid = "01";       //dtl.pkgid;
                        blldtl.qty = 0;
                        blldtl.preqty = Math.Round(dtl.qty, 4, MidpointRounding.AwayFromZero);
                        blldtl.gdstype = WMSConst.GDS_TYPE_NORMAL;
                        blldtl.bthno = dtl.bthno == null ? "" : dtl.bthno;
                        blldtl.vlddat = dtl.vlddat == null ? "" : dtl.vlddat;
                        blldtl.bcd = dtl.bcd == null ? "" : dtl.bcd;
                        blldtl.prvid = bllmst.prvid == null ? "" : dtl.prvid;
                        blldtl.bkr = "";
                        blldtl.bokflg = GetN();
                        blldtl.bokdat = "";
                        blldtl.brief = "";

                        WmsBllGds gds = WmsDc.gds
                                        .Where(e => e.gdsid == dtl.gdsid)
                                        .Select(e => new WmsBllGds
                        {
                            gdsid = e.gdsid.Trim(),
                            gdsdes = e.gdsdes.Trim(),
                            spc = e.spc.Trim(),
                            bsepkg = e.bsepkg.Trim()
                        }).Single();
                        gdss.Add(gds);

                        blldtls.Add(blldtl);
                    }
                }
                this.WmsDc.wms_blldtl.InsertAllOnSubmit(blldtls);
                //===================== 生成一张新的收货单 =====================

                try
                {
                    var dtlstmp = (from e in blldtls
                                   join e1 in gdss on e.gdsid.Trim() equals e1.gdsid.Trim()
                                   select new
                    {
                        e.wmsno,
                        e.vlddat,
                        e.rcdidx,
                        e.qty,
                        e.prvid,
                        e.preqty,
                        e.pkgid,
                        e.gdstype,
                        e.gdsid,
                        e.brief,
                        e.bokflg,
                        e.bokdat,
                        e.bllid,
                        e.bkr,
                        e.bcd,
                        e.barcode,
                        e1.gdsdes,
                        e1.spc,
                        e1.bsepkg
                    }
                                   ).ToArray();
                    Wmsbll obj = new Wmsbll
                    {
                        mst = bllmst,
                        dptdes = (from e in WmsDc.dpt
                                  where e.dptid == odr.mst.dptid
                                  select e.dptdes).Single(),
                        prv = (from e4 in WmsDc.prv
                               where e4.prvid == bllmst.prvid
                               select new WmsBllPrv
                        {
                            prvid = e4.prvid.Trim(),
                            prvdes = e4.prvdes.Trim(),
                        }).Single(),
                        dtl = blldtls.ToArray(),
                        gds = gdss.ToArray(),
                        dtls = dtlstmp
                    };

                    //obj = ((Wmsbll)Rm.ResultObject);
                    var objrm = new
                    {
                        obj.mst.arvdat,
                        obj.mst.bllid,
                        obj.mst.brief,
                        obj.mst.chkdat,
                        obj.mst.chkflg,
                        obj.mst.ckr,
                        obj.mst.hndbllno,
                        obj.mst.huojia,
                        obj.mst.lnknewbllid,
                        obj.mst.lnknewbrief,
                        obj.mst.lnknewno,
                        obj.mst.mkedat,
                        obj.mst.mkr,
                        obj.mst.odrdat,
                        obj.mst.opr,
                        obj.mst.prvid,
                        obj.mst.qu,
                        obj.mst.savdptid,
                        obj.mst.tongdao,
                        obj.mst.wmsno,
                        obj.prv.prvdes,
                        obj.dptdes
                    };
                    Rm.ResultObject = objrm;

                    return Rm;
                }
                catch (Exception ex)
                {
                    return RRErr(ex.Message, "E0065");
                }
            })));
        }
Exemplo n.º 11
0
        public ActionResult BokReciev(String wmsno)
        {
            var qry = from e in WmsDc.wms_bllmst
                      where e.bllid == WMSConst.BLL_TYPE_REVIECEBLL &&
                      e.wmsno == wmsno
                      select e;
            var arrqry = qry.ToArray();

            if (arrqry.Length <= 0)
            {
                return(RNoData("N0239"));
            }
            wms_bllmst bllmst = arrqry[0];

            return(MakeNewBllNo(
                       LoginInfo.DefSavdptid,
                       bllmst.qu,
                       WMSConst.BLL_TYPE_UPBLL, (bllno) =>
            {
                ////正在生成拣货单,请稍候重试
                //string quRetrv = bllmst.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RRInfo( "I0226" );
                //}

                //审核人是否是制单人

                /*if (IsSameLogin(bllmst.mkr))
                 * {
                 *  return RRInfo("I0445" ,LoginInfo.Usrid  ,bllmst.mkr );
                 *
                 * }*/

                #region 判断收货单是否已经登帐
                if (bllmst.chkflg == GetY())
                {
                    return RRInfo("I0446", wmsno);
                }
                #endregion

                #region 判断操作员是否有审核该单据的权限
                //0.判断操作员是否有审核该单据的权限
                var dtapwrs = from e in LoginInfo.DatPwrs
                              select e.qu;
                if (!dtapwrs.Contains(bllmst.qu.Trim()))
                {
                    return RRInfo("I0447");
                }
                #endregion

                #region 是否该单据下的所有商品都已经审核
                //1.是否该单据下的所有商品都已经审核
                var qry1 = from e in WmsDc.wms_blldtl
                           where e.bllid == WMSConst.BLL_TYPE_REVIECEBLL &&
                           e.wmsno == wmsno
                           select e;
                var arrqry1 = qry1.ToArray();
                if (arrqry1.Length <= 0)
                {
                    return RRNoData("N0240");
                }
                foreach (wms_blldtl dtl in arrqry1)
                {
                    if (dtl.bokflg == GetN())
                    {
                        return RRInfo("I0448", dtl.gdsid);
                    }
                }
                #endregion

                #region 修改采购单实收数量
                //判断是否有比应收数量更大的商品
                var qrytpdtl = from e in WmsDc.wms_blltp
                               where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_REVIECEBLL
                               group e by new { e.wmsno, e.gdsid } into g
                select new
                {
                    wmsno = g.Key.wmsno,
                    gdsid = g.Key.gdsid,
                    qty = g.Sum(e1 => e1.qty)
                };
                var qryodrdtl = from e in WmsDc.odrdtl
                                join e1 in WmsDc.wms_bllmst on e.odrno equals e1.lnknewno
                                join e2 in qrytpdtl on new { e1.wmsno, e.gdsid } equals new { e2.wmsno, e2.gdsid }
                where e1.wmsno == wmsno && e1.bllid == WMSConst.BLL_TYPE_REVIECEBLL && e.qty < e2.qty
                select e;
                var arrqryodrdtl = qryodrdtl.ToArray();
                if (arrqryodrdtl.Length > 0)
                {
                    return RRInfo("I0449", arrqryodrdtl[0].gdsid);
                }
                StringBuilder sb = new StringBuilder();
                String cmdsql = null;
                //修改采购单实收数量
                cmdsql = "update odrdtl set preqty=qty, qty=isnull(b.sumqty,0), pkgqty=isnull(b.sumqty,0), amt=convert(decimal(18,2),round(a.prc*isnull(b.sumqty,0), 4)), patamt=convert(decimal(18,2),round(a.taxprc*isnull(b.sumqty,0), 4)), taxamt=convert(decimal(18,2),round((a.taxprc*isnull(b.sumqty,0))-a.prc*isnull(b.sumqty,0), 4))   from "
                         + " odrdtl a "
                         + " left join "
                         + " ( "
                         + " select a1.wmsno, a1.gdsid, sum(a1.qty) sumqty ,b1.lnknewno from wms_blltp a1 "
                         + " 	inner join wms_bllmst b1 on a1.wmsno=b1.wmsno and a1.bllid=b1.bllid"
                         + " where b1.wmsno={0} and b1.bllid={1}"
                         + " group by a1.wmsno, a1.gdsid, b1.lnknewno	"
                         + " ) b on a.odrno=b.lnknewno and a.gdsid=b.gdsid "
                         + " where a.odrno in (select lnknewno from wms_bllmst where wmsno={2})";
                sb.Append(cmdsql);
                //设置收货单审核标志
                cmdsql = "update wms_bllmst set chkflg='" + GetY() + "', ckr={3}, chkdat={4} where wmsno={5} and bllid={6} ";
                sb.Append(cmdsql);
                //设置采购单收货标志
                cmdsql = "update odr set shflg='" + GetY() + "' from odr a inner join wms_bllmst b on b.lnknewno=a.odrno and b.lnknewbllid=a.bllid where b.wmsno={7} and b.bllid={8} ";
                sb.Append(cmdsql);

                //执行处理
                string sNow = GetCurrentDate();
                WmsDc.ExecuteCommand(sb.ToString(), new[] { wmsno, WMSConst.BLL_TYPE_REVIECEBLL, wmsno, LoginInfo.Usrid, sNow, wmsno, WMSConst.BLL_TYPE_REVIECEBLL, wmsno, WMSConst.BLL_TYPE_REVIECEBLL });
                try
                {
                    WmsDc.SubmitChanges();
                }
                catch (Exception ex)
                {
                    return RRErr(ex.Message, "E0066");
                }
                #endregion

                #region 生成上架单
                //4.生成上架单
                //主表
                var qrytp = from e in WmsDc.wms_blltp
                            where e.wmsno == wmsno &&
                            e.bllid == WMSConst.BLL_TYPE_REVIECEBLL
                            orderby e.tpcode, e.rcdidxtp
                select e;
                wms_bllmst rmst = arrqry[0];
                wms_blldtl[] rdtl = arrqry1;
                wms_cang cwmst = new wms_cang();
                List <wms_cangdtl> lstcwdtl = new List <wms_cangdtl>();
                cwmst.wmsno = bllno;
                cwmst.bllid = WMSConst.BLL_TYPE_UPBLL;
                cwmst.savdptid = rmst.savdptid;
                cwmst.prvid = rmst.prvid;
                cwmst.qu = rmst.qu;
                /*mst.rcvdptid = rmst.rcvdptid;*/

                /*mst.times = rmst.times;
                 * mst.lnkbocino = rmst.lnkbocino;
                 * mst.lnkbocidat = rmst.lnkbocidat;*/
                cwmst.mkr = LoginInfo.Usrid;
                cwmst.mkedat = DateTime.Now.ToString("yyyyMMdd");
                cwmst.mkedat2 = GetCurrentDate();
                /*mst.ckr = rmst.ckr;*/
                cwmst.ckr = "";
                cwmst.chkflg = GetN();
                cwmst.chkdat = "";
                cwmst.opr = LoginInfo.Usrid;
                cwmst.brief = rmst.brief;
                cwmst.lnkbllid = rmst.bllid;
                cwmst.lnkno = rmst.wmsno;
                cwmst.lnkbrief = rmst.brief;
                //明细
                var qrycwdtl = from e in qrytp
                               join e1 in WmsDc.wms_blldtl on new { e.wmsno, e.bllid, e.gdsid } equals new { e1.wmsno, e1.bllid, e1.gdsid }
                orderby e.rcdidx, e.rcdidxtp
                select new
                {
                    e,
                    e1
                };
                int i = 1;
                foreach (var tp in qrycwdtl)
                {
                    wms_cangdtl cwdtl = new wms_cangdtl();
                    cwdtl.wmsno = bllno;
                    cwdtl.bllid = WMSConst.BLL_TYPE_UPBLL;
                    cwdtl.rcdidx = i++;
                    cwdtl.oldbarcode = "";
                    cwdtl.barcode = tp.e.barcode;
                    cwdtl.gdsid = tp.e.gdsid;
                    cwdtl.pkgid = tp.e.pkgid;
                    cwdtl.pkgqty = tp.e.qty;
                    cwdtl.qty = Math.Round(tp.e.qty, 4, MidpointRounding.AwayFromZero);
                    cwdtl.gdstype = tp.e.gdstype;
                    cwdtl.bthno = "";
                    cwdtl.vlddat = "";
                    cwdtl.bcd = tp.e1.bcd;
                    cwdtl.tpcode = tp.e.tpcode;
                    cwdtl.barcode = "";
                    cwdtl.bkr = "";
                    cwdtl.bokflg = GetN();
                    cwdtl.bokdat = "";
                    lstcwdtl.Add(cwdtl);
                }
                WmsDc.wms_cang.InsertOnSubmit(cwmst);
                WmsDc.wms_cangdtl.InsertAllOnSubmit(lstcwdtl);
                WmsDc.SubmitChanges();
                #endregion

                #region 推荐仓位

                /*String cmdsql1 = "declare @wmsno varchar(20) "
                 + " set @wmsno={0} "
                 + " exec SuggestBarcode @wmsno ";
                 + WmsDc.ExecuteCommand(cmdsql1, new[] { wmsno });*/
                WmsDc.SuggestBarcode(wmsno);
                #endregion
                try
                {
                    WmsDc.SubmitChanges();
                    return RRSucc("成功", null, "S0218");
                }
                catch (Exception ex)
                {
                    return RRErr(ex.Message, "E0067");
                }
            }));
        }
Exemplo n.º 12
0
        public ActionResult DlRetBlls(String wmsnos)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                String[] wmsno = wmsnos.Split(',');
                String   sInfo = "";
                if (wmsno.Length > 0)
                {
                    foreach (String s in wmsno)
                    {
                        var qrydtl = from e in WmsDc.wms_cangdtl_109
                                     where e.wmsno == s &&
                                     e.bllid == WMSConst.BLL_TYPE_RETCANG
                                     select e;
                        var arrqrydtl = qrydtl.ToArray();
                        int iDtlCount = arrqrydtl.Count();
                        var qrymst    = from e in WmsDc.wms_cang_109
                                        where e.wmsno == s && e.bllid == WMSConst.BLL_TYPE_RETCANG &&
                                        qus.Contains(e.qu.Trim()) &&
                                        e.mkr == LoginInfo.Usrid
                                        select e;
                        var          arrqrymst = qrymst.ToArray();
                        wms_cang_109 mst       = qrymst.FirstOrDefault();
                        if (mst != null)
                        {
                            ////正在生成拣货单,请稍候重试
                            //string quRetrv = mst.qu;
                            //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                            //{
                            //    return RInfo( "I0295" );
                            //}

                            if (mst != null && mst.chkflg == GetY())
                            {
                                sInfo += mst.wmsno + "单据已经审核,不能删除\r\n";
                            }
                            else if (!IsSameLogin(mst.mkr)) //是否是本人制单
                            {
                                return(RInfo("I0296"));
                            }
                            else
                            {
                                WmsDc.wms_cangdtl_109.DeleteAllOnSubmit(arrqrydtl);
                                WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                                //检查单号是否已经审核
                                if (mst != null && mst.chkflg == GetY())
                                {
                                    return(RInfo("I0207"));
                                }
                                WmsDc.SubmitChanges();
                                WmsDc.wms_cang_109.DeleteOnSubmit(mst);
                                WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                                //检查单号是否已经审核
                                if (mst != null && mst.chkflg == GetY())
                                {
                                    return(RInfo("I0207"));
                                }
                                WmsDc.SubmitChanges();

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

                                iDelCangDtl109(arrqrydtl, mst);
                                iDelCangMst109(mst);
                            }
                        }
                    }
                }

                if (!String.IsNullOrEmpty(sInfo))
                {
                    return(RSucc(sInfo, null, "S0140"));
                }

                try
                {
                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("成功", null, "S0141"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0040"));
                }
            }
        }
Exemplo n.º 13
0
        public ActionResult AdRetPrvs(String wmsno, String barcodes, String gdsids, String gdstypes, String bthnos, String vlddats, String qtys)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //判断barcodes、gdsids、gdstypes、qtys是否数量一致
                String[]      barcode = barcodes.Split(',');
                String[]      gdsid   = gdsids.Split(',');
                String[]      qty     = qtys.Split(',');
                String[]      gdstype = gdstypes.Split(',');
                String[]      bthno   = bthnos.Split(',');
                String[]      vlddat  = vlddats.Split(',');
                List <object> retObjs = new List <object>();
                if (
                    (barcode.Length != gdsid.Length) ||
                    (barcode.Length != qty.Length) ||
                    (gdsid.Length != qty.Length) ||
                    (gdstype.Length != gdsid.Length)
                    )
                {
                    return(RInfo("I0349"));
                }

                for (int i = 0; i < gdsid.Length; i++)
                {
                    double d = 0;
                    if (!double.TryParse(qty[i], out d))
                    {
                        return(RInfo("I0350", gdsid[i], qty[i]));
                    }

                    JsonResult    jr = (JsonResult)AdRetPrv(wmsno, barcode[i], gdsid[i], gdstype[i], bthno[i], vlddat[i], d);
                    ResultMessage rm = (ResultMessage)jr.Data;
                    if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                    {
                        return(jr);
                    }
                    retObjs.Add(rm.ResultObject);
                }

                //修改主单时间戳
                //检查单号是否存在
                var qrymst = from e in WmsDc.wms_cang_110
                             where e.wmsno == wmsno &&
                             e.bllid == WMSConst.BLL_TYPE_RETPRV
                             select e;
                wms_cang_110 mst = qrymst.FirstOrDefault();
                if (mst == null)
                {
                    return(RNoData("N0258"));
                }
                string sql  = @"update wms_cang_110 set bllid='110' where wmsno='" + mst.wmsno + "' and bllid='110' and udtdtm={0}";
                int    iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm);
                if (iEff == 0)
                {
                    return(RInfo("I0207"));
                }

                WmsDc.SubmitChanges();
                scop.Complete();
                return(RSucc("成功", retObjs, "S0153"));
            }
        }
Exemplo n.º 14
0
        /// <summary>
        /// 修改返厂单
        /// </summary>
        /// <param name="wmsno"></param>
        /// <param name="gdsid"></param>
        /// <param name="rcdidx"></param>
        /// <param name="qty"></param>
        /// <returns></returns>
        public ActionResult MdARetPrv(String wmsno, String gdsid, int rcdidx, double qty)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //检查单号是否存在
                var qrymst = from e in WmsDc.wms_cang_110
                             where e.wmsno == wmsno &&
                             e.bllid == WMSConst.BLL_TYPE_RETPRV
                             select e;
                var arrqrymst = qrymst.ToArray();
                var qrydtl    = from e in WmsDc.wms_cangdtl_110
                                where e.wmsno == wmsno &&
                                e.bllid == WMSConst.BLL_TYPE_RETPRV &&
                                e.gdsid == gdsid && e.rcdidx == rcdidx
                                orderby e.rcdidx descending
                                select e;
                var arrqrydtl = qrydtl.ToArray();
                //单据是否找到
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0161"));
                }
                //检查是否有数据权限
                wms_cang_110 mst = arrqrymst[0];
                ////正在生成拣货单,请稍候重试
                //string quRetrv = mst.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo( "I0344" );
                //}

                if (!qus.Contains(mst.qu.Trim()))
                {
                    return(RInfo("I0345"));
                }
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0346"));
                }
                //是否是同一个人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0347", mst.mkr, LoginInfo.Usrid));
                }

                //未找到该商品
                if (arrqrydtl.Length <= 0)
                {
                    return(RNoData("N0162"));
                }

                //修改数量
                wms_cangdtl_110 dtl = arrqrydtl[0];

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

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

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

                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("成功", arrqrydtl[0], "S0152"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0046"));
                }
            }
        }
Exemplo n.º 15
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"));
            }
        }
Exemplo n.º 16
0
        public ActionResult DlRetBllDetail(String wmsno, String gdsids)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                String[] gdsid  = gdsids.Split(',');
                var      qrymst = WmsDc.ExecuteQuery <wms_cang_109>("select * from wms_cang_109 with(updlock) where bllid={0} and wmsno={1} and mkr={2}",
                                                                    WMSConst.BLL_TYPE_RETCANG, wmsno, LoginInfo.Usrid);

                /*var qrymst = from e in WmsDc.wms_cang_109
                 *           where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG
                 *           && e.mkr == LoginInfo.Usrid
                 *           && qus.Contains(e.qu.Trim())
                 *           select e;*/
                var arrqrymst = qrymst.Where(e => qus.Contains(e.qu.Trim())).ToArray();

                var qrydtl = from e in WmsDc.wms_cangdtl_109
                             where e.wmsno == wmsno &&
                             e.bllid == WMSConst.BLL_TYPE_RETCANG
                             select e;
                var dlarrdtl = qrydtl.Where(w => gdsid.Contains(w.gdsid.Trim())).ToArray();

                /*var qrymst = from e in WmsDc.wms_cang_109
                 *           where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_RETCANG
                 *           && e.mkr == LoginInfo.Usrid
                 *           && qus.Contains(e.qu.Trim())
                 *           select e;
                 * var arrqrymst = qrymst.ToArray();*/
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0150"));
                }
                wms_cang_109 mst = arrqrymst[0];
                ////正在生成拣货单,请稍候重试
                //string quRetrv = mst.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo("I0292");
                //}
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0293"));
                }
                //是否是本人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0294"));
                }

                if (dlarrdtl.Length <= 0)
                {
                    return(RNoData("N0151"));
                }
                try
                {
                    //下面注释这行影响效率,所以用加外键的方式处理此次的并发问题

                    /*int iDtlCount = WmsDc.ExecuteQuery<int>("select count(*) from wms_cangdtl_109 with(xlock) where bllid={0} and wmsno={1}",
                     *                      WMSConst.BLL_TYPE_RETCANG, wmsno).First();*/
                    WmsDc.wms_cangdtl_109.DeleteAllOnSubmit(dlarrdtl);
                    iDelCangDtl109(dlarrdtl, mst);
                    //查询明细删除后,是否已经没有明细,没有明细就删除主单据
                    //var arrqrydtl = qrydtl.ToArray();
                    //int iDtlCount = arrqrydtl.Length;
                    int iDtlCount = qrydtl.Count();
                    if (iDtlCount <= 0)
                    {
                        WmsDc.wms_cang_109.DeleteOnSubmit(mst);
                        iDelCangMst109(mst);
                    }

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

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

                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("删除成功", null, "S0139"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0039"));
                }
            }
        }
Exemplo n.º 17
0
        public ActionResult MdPrftOLssBll(String wmsno, String barcodes, String gdsids, String gdstypes, String bthnos, String vlddats, String qtys, String rsns)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //拆分参数
                //检查并创建明细
                JsonResult    jr = (JsonResult)_MakeParam(wmsno, barcodes, gdsids, gdstypes, bthnos, vlddats, qtys, rsns);
                ResultMessage rm = (ResultMessage)jr.Data;
                if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                {
                    return(jr);
                }

                //检查单号是否存在
                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
                                select e;
                var arrqrydtl = qrydtl.ToArray();
                //单据是否找到
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0119"));
                }
                //检查是否有数据权限
                wms_cang_111 mst = arrqrymst[0];
                //正在生成拣货单,请稍候重试
                if (mst.times.Trim() == "-")
                {
                    string quRetrv = mst.qu;
                    if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                    {
                        return(RInfo("I0215"));
                    }
                }

                if (!qus.Contains(mst.qu.Trim()))
                {
                    return(RInfo("I0216"));
                }
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0217"));
                }

                //是否是本人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0218"));
                }

                wms_cangdtl_111[] newdtl = (wms_cangdtl_111[])rm.ResultObject;
                int i = 0;

                if (mst.times.Trim() == "-")
                {
                    //如果是报损,判断是否有库存
                    foreach (wms_cangdtl_111 d in newdtl)
                    {
                        if (d.brfdtl.Trim() == "")
                        {
                            return(RInfo("I0219", d.gdsid));
                        }

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


                //删除单据明细
                WmsDc.wms_cangdtl_111.DeleteAllOnSubmit(arrqrydtl);
                iDelCangDtl111(arrqrydtl, mst);
                //增加单据明细
                WmsDc.wms_cangdtl_111.InsertAllOnSubmit(newdtl);
                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("成功", newdtl, "S0104"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0027"));
                }
            }
        }
Exemplo n.º 18
0
        public ActionResult DlRetPrvBllDtl(String wmsno, String gdsid, int rcdidx, String isMd)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                ////正在生成拣货单,请稍候重试
                //string quRetrv = GetQuByGdsid(gdsid, LoginInfo.DefStoreid).FirstOrDefault();
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo( "I0336" );
                //}

                isMd = String.IsNullOrEmpty(isMd) ? "n" : "y";
                //检查单号是否存在
                var qrymst = from e in WmsDc.wms_cang_110
                             where e.wmsno == wmsno &&
                             e.bllid == WMSConst.BLL_TYPE_RETPRV
                             select e;
                var arrqrymst = qrymst.ToArray();
                var qrydtl    = from e in WmsDc.wms_cangdtl_110
                                where e.wmsno == wmsno
                                //&& e.gdsid == gdsid && e.rcdidx == rcdidx
                                && e.bllid == WMSConst.BLL_TYPE_RETPRV
                                select e;
                var arrqrydtl  = qrydtl.ToArray();
                var arrqrydtl1 = qrydtl.Where(e => e.gdsid == gdsid && e.rcdidx == rcdidx).ToArray();
                //单据是否找到
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0159"));
                }
                //检查是否有数据权限
                wms_cang_110 mst = arrqrymst[0];
                if (!qus.Contains(mst.qu.Trim()))
                {
                    return(RInfo("I0337"));
                }
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0338"));
                }
                //是否是同一个人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0339", mst.mkr, LoginInfo.Usrid));
                }
                //删除单据明细
                int iDtlCnt = arrqrydtl.Length;
                WmsDc.wms_cangdtl_110.DeleteAllOnSubmit(arrqrydtl1);
                iDelCangDtl110(arrqrydtl1, mst);
                if (iDtlCnt == 1 && isMd == "n")
                {
                    WmsDc.wms_cang_110.DeleteAllOnSubmit(arrqrymst);
                    iDelCangMst110(arrqrymst[0]);
                }
                //删除主单据
                try
                {
                    //WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                    //检查单号是否已经审核
                    if (mst != null && mst.chkflg == GetY())
                    {
                        return(RInfo("I0207"));
                    }

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

                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("成功", null, "S0150"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0044"));
                }
            }
        }