public ActionResult GetUpBllDtl(String wmsno) { var qry = from e in WmsDc.wms_cang where e.bllid == WMSConst.BLL_TYPE_UPBLL && e.savdptid == LoginInfo.DefSavdptid && qus.Contains(e.qu.Trim()) && e.wmsno == wmsno select e; var arrqry = qry.ToArray(); if (arrqry.Length <= 0) { return(RNoData("N0211", wmsno)); } wms_cang mst = arrqry[0]; var qrydtl = from e in WmsDc.wms_cangdtl where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_UPBLL group e by new { e.tpcode, e.barcode, e.bokflg, e.wmsno } into g select new { g.Key.wmsno, g.Key.tpcode, g.Key.barcode, g.Key.bokflg }; var arrqrydtl = qrydtl.ToArray(); if (arrqrydtl.Length <= 0) { return(RNoData("N0212")); } return(RSucc("成功", arrqrydtl, "S0195")); }
private wms_cang GetCangMst(String wmsno) { var qrymst = from e in WmsDc.wms_cang where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_UPBLL select e; wms_cang cang = qrymst.FirstOrDefault(); return(cang); }
public ActionResult GetUpBllDtlByBarcode(String wmsno, String tp) { var qry = from e in WmsDc.wms_cang where e.bllid == WMSConst.BLL_TYPE_UPBLL && (e.savdptid == LoginInfo.DefSavdptid || e.savdptid == LoginInfo.DefCsSavdptid) && qus.Contains(e.qu.Trim()) && e.wmsno == wmsno select e; var arrqry = qry.ToArray(); if (arrqry.Length <= 0) { return(RNoData("N0209", wmsno)); } wms_cang mst = arrqry[0]; var qrydtltp = from e in qry join e1 in WmsDc.wms_bllmst on new { wmsno = e.lnkno, bllid = e.lnkbllid } equals new { e1.wmsno, e1.bllid } join e2 in WmsDc.wms_blltp on new { wmsno = e1.wmsno, bllid = e1.bllid } equals new { e2.wmsno, e2.bllid } where e2.tpcode.Contains(tp.Trim()) group e2 by new { e2.gdsid, e2.gdstype, e2.pkgid, e2.tpcode, e2.savdptid } into g select new { g.Key.gdsid, g.Key.gdstype, g.Key.pkgid, g.Key.tpcode, g.Key.savdptid, sqty = g.Sum(e => e.qty) }; var qrydtltpgds = from e in qrydtltp join e1 in WmsDc.gds on e.gdsid equals e1.gdsid select new { e.gdsid, e.gdstype, e.pkgid, e.savdptid, e.tpcode, e.sqty, e1.gdsdes, e1.spc, e1.bsepkg }; var arrqrydtl = qrydtltpgds.ToArray(); if (arrqrydtl.Length <= 0) { return(RNoData("N0210")); } return(RSucc("成功", arrqrydtl, "S0194")); }
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")); } } }
public ActionResult BokRetrieveGds(String wmsno, String barcode, String gdsid, String gdstype, String bthno, String vlddat, double qty) { //检索主表、明细表 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.gdsid == gdsid.Trim() && e.gdstype == gdstype.Trim() && e.bthno == bthno.Trim() && e.vlddat == vlddat.Trim() && e.barcode == barcode.Trim() && e.wmsno == wmsno select e; var arrdtl = qrydtl.ToArray(); #region 检查输入参数 if (arrmst.Length <= 0) { return(RNoData("N0248")); } if (arrdtl.Length <= 0) { return(RNoData("N0249")); } wms_cang mst = arrmst[0]; ////正在生成拣货单,请稍候重试 //string quRetrv = mst.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0391" ); //} wms_cangdtl dtl = arrdtl[0]; //是否捡货单已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0460")); } #endregion #region 商品登帐 //判断是否已经被审核 WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, dtl); if (dtl.bokflg == GetY()) { //看看是哪个审核的 string[] whoAdt = (from e in WmsDc.emp where e.empid == dtl.bkr select e.empdes).ToArray(); if (whoAdt.Count() > 0) { return(RInfo("I0125", string.Join(",", whoAdt))); } } if (dtl.bokflg == GetY() && dtl.bkr.Trim() != LoginInfo.Usrid) { return(RInfo("I0461", dtl.bkr)); } if (dtl.bokflg == GetN() && dtl.qty != null) { dtl.preqty = dtl.qty; } // 确认数量大于应拣数量 if (qty > dtl.preqty) { return(RInfo("i0473")); } dtl.qty = Math.Round(qty, 4); dtl.pkgqty = Math.Round(qty, 4); dtl.bokflg = GetY(); dtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss"); dtl.bkr = LoginInfo.Usrid; #endregion try { try { WmsDc.SubmitChanges(); } catch (Exception ex) { if (ex.Message.IndexOf("牺牲品") > 0) { return(RInfo("E0075")); } else { return(RInfo("E0076", ex.Message)); } } return(RSucc("成功", null, "S0224")); } catch (Exception ex) { return(RErr(ex.Message, "E0072")); } }
public ActionResult CheckCangwei(String wmsno, String barcode, String newbarcode, String tpcode) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { wms_cangwei oldCw = null; String rqu = GetQuByBarcode(newbarcode); String oqu = GetQuByBarcode(barcode); //如果旧仓位不为空,就需要查询出就仓位,以便修改其仓位托盘tpflg标志 if (!string.IsNullOrEmpty(barcode.Trim())) { //判断仓位码是否有效 if (!IsExistBarcode(barcode)) { return(RInfo("I0396", barcode.Trim())); } oldCw = GetCangWei(barcode); } //判断仓位码是否有效 if (!string.IsNullOrEmpty(newbarcode) && !IsExistBarcode(newbarcode)) { return(RInfo("I0397", newbarcode.Trim())); } //todo 判断新的仓位码是否为今天已经上架单中已有的仓位 //主表 wms_cang cang = GetCangMst(wmsno); //明细表 var qrydtl = GetCangDtl(wmsno) .Where(e => e.barcode.Trim() == barcode.Trim() && e.tpcode.Trim() == tpcode.Trim()); var arrqrydtl = qrydtl.ToArray(); // 判断明细的分区是否是同一个分区,而且newbarcode的分区也在商品的分区内 string initQu = null; foreach (wms_cangdtl dtl in arrqrydtl) { string gdsqu = GetQuByGdsid(dtl.gdsid, LoginInfo.DefStoreid).FirstOrDefault(); if (string.IsNullOrEmpty(initQu)) { initQu = gdsqu; } if (initQu != gdsqu) { return(RInfo("I0398")); } } if (!dtqus.Contains(rqu)) { if (initQu != newbarcode.Substring(0, 2)) { return(RInfo("I0399")); } } #region 效性检查 //检查单号是否有效 if (cang == null) { return(RNoData("N0213")); } ////正在生成拣货单,请稍候重试 //string quRetrv = cang.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0400" ); //} //检查是否已经审核 if (cang.chkflg == GetY()) { return(RInfo("I0401")); } //未查找到托盘的正确仓位 if (arrqrydtl.Length <= 0) { return(RNoData("N0214")); } //检查同一个托盘是否都已经上架 if (arrqrydtl[0].bokflg == GetY()) { return(RInfo("I0402")); } #endregion wms_cangwei cw = null; //如果调入不在堆头区,就判断一下区域间能不能互相调用 //if (!dtqus.Contains(rqu)) //{ //查看新仓位是否不为推荐仓位 if (!String.IsNullOrEmpty(newbarcode) && barcode.Trim() != newbarcode.Trim()) { cw = GetCangWei(newbarcode); if (cw == null) { return(RNoData("N0215", newbarcode)); } if (!savdpts.Contains(cw.savdptid.Trim())) { return(RInfo("I0403", newbarcode)); } if (!qus.Contains(cw.qu.Trim())) { return(RInfo("I0404", newbarcode)); } /*var qrynewcw = from e in WmsDc.wms_cang * join e1 in WmsDc.wms_cangdtl on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid } * where //e.wmsno == wmsno && * e.bllid == "102" //上架单 * && e1.barcode == newbarcode * && e.mkedat.Substring(0, 8) == GetCurrentDay() * select e; * if (oldCw != null && * ( * !qrynewcw.Any() && //这两句不能换位置 * cw.tjflg == GetY() //调整仓位{0}为不在当天上架单中的推荐仓位,不能使用 * ) * ) * { * return RInfo("I0405", newbarcode); * }*/ //修改新仓位标记tpflg=GetY() cw.tpflg = GetY(); //修改旧仓位tpflg=GetN() if (oldCw != null) { oldCw.tpflg = GetN(); } WmsDc.SubmitChanges(); } //} #region 架托盘到仓位 foreach (wms_cangdtl cangdtl in arrqrydtl) { cangdtl.bkr = LoginInfo.Usrid; cangdtl.bokflg = GetY(); cangdtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss"); if (cw != null) { cangdtl.oldbarcode = cangdtl.barcode; cangdtl.barcode = newbarcode; } } try { WmsDc.SubmitChanges(); //done: 判断是否已经上架单明细已经审核完毕,完毕后就直接审核整单 //明细表 /**/ int?isLasted = WmsDc.ExecuteQuery <int?>("select count(*) from wms_cangdtl with(updlock) where wmsno={0} and bllid={1} and bokflg={2}", wmsno, WMSConst.BLL_TYPE_UPBLL, GetN()).FirstOrDefault(); if (isLasted == null || isLasted == 0) { wms_cangdtl[] arrqryaldtl = GetCangDtl(wmsno) .Where(e => e.bokflg == GetN()) .ToArray(); // done: 判断盘点收货单有没有整单审核,提示不能上架 wms_bllmst bllmst = GetBllMst(wmsno); if (bllmst == null) { return(RInfo("I0406")); } if (bllmst.chkflg == GetN()) { return(RInfo("I0407")); } #region 审核整单 JsonResult ar = (JsonResult)AdtUpShelf(wmsno); ResultMessage rm = (ResultMessage)ar.Data; if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS) { return(ar); } #endregion 审核整单 } scop.Complete(); return(RSucc("扫描仓位码和托盘码匹配成功!", null, "S0196")); } catch (Exception ex) { return(RErr("异常错误!" + ex.Message, "E0053")); } #endregion } } private wms_cangwei GetCangWei(String newbarcode) { var qrytj = from e in WmsDc.wms_cangwei where e.isvld == GetY() // && e.tjflg == GetN() //&& savdpts.Contains(e.savdptid) //&& qus.Contains(e.qu) && e.barcode == newbarcode select e; wms_cangwei cw = qrytj.FirstOrDefault(); return(cw); } private wms_cangdtl[] GetCangDtl(String wmsno) { var qryaldtl = from e in WmsDc.wms_cangdtl join e1 in WmsDc.wms_cang on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid } where e.wmsno == wmsno && e1.bllid == WMSConst.BLL_TYPE_UPBLL //&& e.bokflg == GetN() select e; var arrqryaldtl = qryaldtl.ToArray(); return(arrqryaldtl); } private wms_bllmst GetBllMst(String wmsno) { var qry = from e in WmsDc.wms_bllmst join e1 in WmsDc.wms_cang on new { e.wmsno, e.bllid } equals new { wmsno = e1.lnkno, bllid = e1.lnkbllid } where e1.wmsno == wmsno && e1.bllid == WMSConst.BLL_TYPE_UPBLL select e; wms_bllmst bllmst = qry.FirstOrDefault(); return(bllmst); } private ActionResult AdtUpShelf(String wmsno) { //主表 wms_cang cang = GetCangMst(wmsno); //明细表 wms_cangdtl[] arrqrydtl = GetCangDtl(wmsno); #region 效性检查 //检查单号是否有效 if (cang == null) { return(RNoData("N0216")); } ////正在生成拣货单,请稍候重试 //string quRetrv = cang.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0408" ); //} //检查是否已经审核 if (cang.chkflg == GetY()) { return(RInfo("I0409")); } //未查找到收货单明细 if (arrqrydtl.Length <= 0) { return(RNoData("N0217")); } //检查是否所有托盘都已经确认 foreach (wms_cangdtl cangdtl in arrqrydtl) { if (cangdtl.bokflg == GetN()) { return(RInfo("I0410", cangdtl.tpcode)); } } #endregion #region 登帐 String fscprdid = GetCurrentFscprdid(); var qrygdsbs = from e in WmsDc.wms_gdsbs where e.fscprdid == fscprdid && e.srcbllno == cang.wmsno && e.bllid == cang.bllid select e; var arrqrygdsbs = qrygdsbs.ToArray(); WmsDc.wms_gdsbs.DeleteAllOnSubmit(arrqrygdsbs); WmsDc.SubmitChanges(); List <wms_gdsbs> lstgdsbs = new List <wms_gdsbs>(); foreach (wms_cangdtl cangdtl in arrqrydtl) { wms_gdsbs gdsbs = new wms_gdsbs(); gdsbs.actdat = DateTime.Now.ToString("yyyyMMdd"); gdsbs.barcode = cangdtl.barcode; gdsbs.bcd = cangdtl.bcd; gdsbs.bllid = cang.bllid; gdsbs.brief = cang.brief; gdsbs.bthno = cangdtl.bthno; gdsbs.dbtcrt = '1'; gdsbs.empid = LoginInfo.Usrid; gdsbs.fscprdid = fscprdid; gdsbs.gdsid = cangdtl.gdsid; gdsbs.gdstype = cangdtl.gdstype; gdsbs.prvid = cang.prvid; gdsbs.qty = cangdtl.qty; gdsbs.savdptid = cang.savdptid; gdsbs.srcbllno = cang.wmsno; gdsbs.srcrcdidx = cangdtl.rcdidx; gdsbs.vlddat = cangdtl.vlddat; lstgdsbs.Add(gdsbs); #region 统计帐表数据更新 wms_cangwei cw = GetCangWei(cangdtl.barcode); if (cw == null) { return(RNoData("N0218", gdsbs.gdsid)); } #region 修改仓位有货标记 /*try //周熙写了触发器,说不用改这个了 * { * cw.kcflg = WMSConst.KC_FLG_HASQTY; //修改仓位有无库存,有为1,没有为0; * cw.tpflg = GetN(); * WmsDc.SubmitChanges(); * } * catch (Exception ex) * { * }*/ #endregion var qrycwgdsbs = from e in WmsDc.wms_cwgdsbs where e.barcode == gdsbs.barcode.Trim() //&& e.bcd == gdsbs.bcd //&& e.bthno == gdsbs.bthno && e.gdsid == gdsbs.gdsid.Trim() && e.gdstype == gdsbs.gdstype.Trim() && e.bthno == gdsbs.bthno && e.vlddat == gdsbs.vlddat //&& e.prvid == gdsbs.prvid && e.savdptid == gdsbs.savdptid && e.qu == cw.qu.Trim() select e; var arrqrycwgdsbs = qrycwgdsbs.ToArray(); //如果统计帐表里面没有就增加一条记录 if (arrqrycwgdsbs.Length <= 0) { wms_cwgdsbs cwgdsbs = new wms_cwgdsbs(); cwgdsbs.barcode = gdsbs.barcode; cwgdsbs.bcd = gdsbs.bcd; cwgdsbs.gdsid = gdsbs.gdsid; cwgdsbs.qty = gdsbs.qty; cwgdsbs.gdstype = gdsbs.gdstype; cwgdsbs.prvid = gdsbs.prvid; cwgdsbs.qu = cw.qu; cwgdsbs.savdptid = gdsbs.savdptid; cwgdsbs.bthno = gdsbs.bthno == null ? "1" : gdsbs.bthno; cwgdsbs.vlddat = gdsbs.vlddat == null?GetCurrentDay() : gdsbs.vlddat; WmsDc.wms_cwgdsbs.InsertOnSubmit(cwgdsbs); WmsDc.SubmitChanges(); } else //如果有的话就修改统计帐表的信息 { wms_cwgdsbs cwgdsbs = arrqrycwgdsbs[0]; cwgdsbs.qty += gdsbs.qty; WmsDc.SubmitChanges(); } #endregion //WmsDc.SubmitChanges(); } //WmsDc.wms_gdsbs.InsertAllOnSubmit(lstgdsbs); #endregion #region 修改审核标记 cang.chkflg = GetY(); cang.ckr = LoginInfo.Usrid; cang.chkdat = DateTime.Now.ToString("yyyyMMddHHmmss"); #endregion WmsDc.SubmitChanges(); return(RSucc("上架单审核成功!", null, "S0197")); }
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"); } })); }
public ActionResult CheckCangwei(String wmsno, String barcode, String newbarcode, String tpcode) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { wms_cangwei oldCw = null; String rqu = GetQuByBarcode(newbarcode); String oqu = GetQuByBarcode(barcode); //如果旧仓位不为空,就需要查询出就仓位,以便修改其仓位托盘tpflg标志 if (!string.IsNullOrEmpty(barcode.Trim())) { //判断仓位码是否有效 if (!IsExistBarcode(barcode)) { return(RInfo("I0396", barcode.Trim())); } oldCw = GetCangWei(barcode); } //判断仓位码是否有效 if (!string.IsNullOrEmpty(newbarcode) && !IsExistBarcode(newbarcode)) { return(RInfo("I0397", newbarcode.Trim())); } //todo 判断新的仓位码是否为今天已经上架单中已有的仓位 //主表 wms_cang cang = GetCangMst(wmsno); //明细表 var qrydtl = GetCangDtl(wmsno) .Where(e => e.barcode.Trim() == barcode.Trim() && e.tpcode.Trim() == tpcode.Trim()); var arrqrydtl = qrydtl.ToArray(); // 判断明细的分区是否是同一个分区,而且newbarcode的分区也在商品的分区内 string initQu = null; foreach (wms_cangdtl dtl in arrqrydtl) { string gdsqu = GetQuByGdsid(dtl.gdsid, LoginInfo.DefStoreid).FirstOrDefault(); if (string.IsNullOrEmpty(initQu)) { initQu = gdsqu; } if (initQu != gdsqu) { return(RInfo("I0398")); } } if (!dtqus.Contains(rqu)) { if (initQu != newbarcode.Substring(0, 2)) { return(RInfo("I0399")); } } #region 效性检查 //检查单号是否有效 if (cang == null) { return(RNoData("N0213")); } ////正在生成拣货单,请稍候重试 //string quRetrv = cang.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0400" ); //} //检查是否已经审核 if (cang.chkflg == GetY()) { return(RInfo("I0401")); } //未查找到托盘的正确仓位 if (arrqrydtl.Length <= 0) { return(RNoData("N0214")); } //检查同一个托盘是否都已经上架 if (arrqrydtl[0].bokflg == GetY()) { return(RInfo("I0402")); } #endregion wms_cangwei cw = null; //如果调入不在堆头区,就判断一下区域间能不能互相调用 //if (!dtqus.Contains(rqu)) //{ //查看新仓位是否不为推荐仓位 if (!String.IsNullOrEmpty(newbarcode) && barcode.Trim() != newbarcode.Trim()) { cw = GetCangWei(newbarcode); if (cw == null) { return(RNoData("N0215", newbarcode)); } if (!savdpts.Contains(cw.savdptid.Trim())) { return(RInfo("I0403", newbarcode)); } if (!qus.Contains(cw.qu.Trim())) { return(RInfo("I0404", newbarcode)); } /*var qrynewcw = from e in WmsDc.wms_cang * join e1 in WmsDc.wms_cangdtl on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid } * where //e.wmsno == wmsno && * e.bllid == "102" //上架单 * && e1.barcode == newbarcode * && e.mkedat.Substring(0, 8) == GetCurrentDay() * select e; * if (oldCw != null && * ( * !qrynewcw.Any() && //这两句不能换位置 * cw.tjflg == GetY() //调整仓位{0}为不在当天上架单中的推荐仓位,不能使用 * ) * ) * { * return RInfo("I0405", newbarcode); * }*/ //修改新仓位标记tpflg=GetY() cw.tpflg = GetY(); //修改旧仓位tpflg=GetN() if (oldCw != null) { oldCw.tpflg = GetN(); } WmsDc.SubmitChanges(); } //} #region 架托盘到仓位 foreach (wms_cangdtl cangdtl in arrqrydtl) { cangdtl.bkr = LoginInfo.Usrid; cangdtl.bokflg = GetY(); cangdtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss"); if (cw != null) { cangdtl.oldbarcode = cangdtl.barcode; cangdtl.barcode = newbarcode; } } try { WmsDc.SubmitChanges(); //done: 判断是否已经上架单明细已经审核完毕,完毕后就直接审核整单 //明细表 wms_cangdtl[] arrqryaldtl = GetCangDtl(wmsno) .Where(e => e.bokflg == GetN()) .ToArray(); if (arrqryaldtl.Length == 0) { // done: 判断盘点收货单有没有整单审核,提示不能上架 wms_bllmst bllmst = GetBllMst(wmsno); if (bllmst == null) { return(RInfo("I0406")); } if (bllmst.chkflg == GetN()) { return(RInfo("I0407")); } #region 审核整单 JsonResult ar = (JsonResult)AdtUpShelf(wmsno); ResultMessage rm = (ResultMessage)ar.Data; if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS) { return(ar); } #endregion 审核整单 } scop.Complete(); return(RSucc("扫描仓位码和托盘码匹配成功!", null, "S0196")); } catch (Exception ex) { return(RErr("异常错误!" + ex.Message, "E0053")); } #endregion } }
private ActionResult AdtUpShelf(String wmsno) { //主表 wms_cang cang = GetCangMst(wmsno); //明细表 wms_cangdtl[] arrqrydtl = GetCangDtl(wmsno); #region 效性检查 //检查单号是否有效 if (cang == null) { return(RNoData("N0216")); } ////正在生成拣货单,请稍候重试 //string quRetrv = cang.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0408" ); //} //检查是否已经审核 if (cang.chkflg == GetY()) { return(RInfo("I0409")); } //未查找到收货单明细 if (arrqrydtl.Length <= 0) { return(RNoData("N0217")); } //检查是否所有托盘都已经确认 foreach (wms_cangdtl cangdtl in arrqrydtl) { if (cangdtl.bokflg == GetN()) { return(RInfo("I0410", cangdtl.tpcode)); } } #endregion #region 登帐 String fscprdid = GetCurrentFscprdid(); var qrygdsbs = from e in WmsDc.wms_gdsbs where e.fscprdid == fscprdid && e.srcbllno == cang.wmsno && e.bllid == cang.bllid select e; var arrqrygdsbs = qrygdsbs.ToArray(); WmsDc.wms_gdsbs.DeleteAllOnSubmit(arrqrygdsbs); WmsDc.SubmitChanges(); List <wms_gdsbs> lstgdsbs = new List <wms_gdsbs>(); foreach (wms_cangdtl cangdtl in arrqrydtl) { wms_gdsbs gdsbs = new wms_gdsbs(); gdsbs.actdat = DateTime.Now.ToString("yyyyMMdd"); gdsbs.barcode = cangdtl.barcode; gdsbs.bcd = cangdtl.bcd; gdsbs.bllid = cang.bllid; gdsbs.brief = cang.brief; gdsbs.bthno = cangdtl.bthno; gdsbs.dbtcrt = '1'; gdsbs.empid = LoginInfo.Usrid; gdsbs.fscprdid = fscprdid; gdsbs.gdsid = cangdtl.gdsid; gdsbs.gdstype = cangdtl.gdstype; gdsbs.prvid = cang.prvid; gdsbs.qty = cangdtl.qty; gdsbs.savdptid = cang.savdptid; gdsbs.srcbllno = cang.wmsno; gdsbs.srcrcdidx = cangdtl.rcdidx; gdsbs.vlddat = cangdtl.vlddat; lstgdsbs.Add(gdsbs); #region 统计帐表数据更新 wms_cangwei cw = GetCangWei(cangdtl.barcode); if (cw == null) { return(RNoData("N0218", gdsbs.gdsid)); } #region 修改仓位有货标记 /*try //周熙写了触发器,说不用改这个了 * { * cw.kcflg = WMSConst.KC_FLG_HASQTY; //修改仓位有无库存,有为1,没有为0; * cw.tpflg = GetN(); * WmsDc.SubmitChanges(); * } * catch (Exception ex) * { * }*/ #endregion var qrycwgdsbs = from e in WmsDc.wms_cwgdsbs where e.barcode == gdsbs.barcode.Trim() //&& e.bcd == gdsbs.bcd //&& e.bthno == gdsbs.bthno && e.gdsid == gdsbs.gdsid.Trim() && e.gdstype == gdsbs.gdstype.Trim() && e.bthno == gdsbs.bthno && e.vlddat == gdsbs.vlddat //&& e.prvid == gdsbs.prvid && e.qu == cw.qu.Trim() select e; var arrqrycwgdsbs = qrycwgdsbs.ToArray(); //如果统计帐表里面没有就增加一条记录 if (arrqrycwgdsbs.Length <= 0) { wms_cwgdsbs cwgdsbs = new wms_cwgdsbs(); cwgdsbs.barcode = gdsbs.barcode; cwgdsbs.bcd = gdsbs.bcd; cwgdsbs.gdsid = gdsbs.gdsid; cwgdsbs.qty = gdsbs.qty; cwgdsbs.gdstype = gdsbs.gdstype; cwgdsbs.prvid = gdsbs.prvid; cwgdsbs.qu = cw.qu; cwgdsbs.savdptid = gdsbs.savdptid; cwgdsbs.bthno = gdsbs.bthno == null ? "1" : gdsbs.bthno; cwgdsbs.vlddat = gdsbs.vlddat == null?GetCurrentDay() : gdsbs.vlddat; WmsDc.wms_cwgdsbs.InsertOnSubmit(cwgdsbs); WmsDc.SubmitChanges(); } else //如果有的话就修改统计帐表的信息 { wms_cwgdsbs cwgdsbs = arrqrycwgdsbs[0]; cwgdsbs.qty += gdsbs.qty; WmsDc.SubmitChanges(); } #endregion //WmsDc.SubmitChanges(); } //WmsDc.wms_gdsbs.InsertAllOnSubmit(lstgdsbs); #endregion #region 修改审核标记 cang.chkflg = GetY(); cang.ckr = LoginInfo.Usrid; cang.chkdat = DateTime.Now.ToString("yyyyMMddHHmmss"); #endregion WmsDc.SubmitChanges(); return(RSucc("上架单审核成功!", null, "S0197")); }
public ActionResult BokRetrieveGds(String wmsno, String barcode, String gdsid, String gdstype, double qty) { using (TransactionScope scop = new TransactionScope()) { //检索主表、明细表 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.gdsid == gdsid && e.gdstype == gdstype && e.barcode == barcode && e.wmsno == wmsno && e.tpcode == "y" select e; var arrdtl = qrydtl.ToArray(); #region 检查输入参数 if (arrmst.Length <= 0) { return(RNoData("N0228")); } if (arrdtl.Length <= 0) { return(RNoData("N0229")); } wms_cang mst = arrmst[0]; //正在生成拣货单,请稍候重试 //string quRetrv = mst.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0117" ); //} wms_cangdtl dtl = arrdtl[0]; //是否捡货单已经审核 if (mst.chkflg == GetY()) { return(RInfo("I0430")); } #endregion #region 商品登帐 if (dtl.bokflg == GetY() && dtl.bkr.Trim() != LoginInfo.Usrid) { return(RInfo("I0431", dtl.bkr)); } if (dtl.bokflg == GetN() && dtl.qty != null) { //dtl.preqty = dtl.qty; } if (dtl.tpcode == "n") { return(RInfo("I0118")); } if (dtl.preqty < qty && dtl.tpcode == "y") { return(RInfo("I0119")); } dtl.qty = Math.Round(qty, 4); dtl.pkgqty = Math.Round(qty, 4); //如果是206的单据,同一个商品的最后一条确认完后就不能再修改 var qryallbygdsidN1 = from e in WmsDc.wms_cangdtl where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.gdsid == gdsid //&& e.gdstype == gdstype && e.wmsno == wmsno && e.bokflg == GetN() && e.tpcode == "y" select e; int iCnt = qryallbygdsidN1.Count(); if (mst.lnkbllid.Trim() == "206" && iCnt == 0) { return(RInfo("I0120")); } dtl.bokflg = GetY(); dtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss"); dtl.bkr = LoginInfo.Usrid; WmsDc.SubmitChanges(); if (dtl.preqty != dtl.qty) { i(wmsno, WMSConst.BLL_TYPE_RETRIEVE, "拣货商品明细确认", "应拣数量:" + dtl.preqty + ",实拣数量:" + dtl.qty, mst.qu, mst.savdptid); } #endregion #region 如果是206配送拣货的单据,在同一个拣货单里面同一商品确认完后,写入分货表 if (mst.lnkbllid.Trim() == "206") { var qryallbygdsidN = from e in WmsDc.wms_cangdtl where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.gdsid == gdsid //&& e.gdstype == gdstype && e.wmsno == wmsno && e.bokflg == GetN() && e.tpcode == "y" select e; iCnt = qryallbygdsidN.Count(); if (iCnt == 0) { var qryAllByGdsidCang = from e in WmsDc.wms_cangdtl join e1 in WmsDc.wms_cang on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid } where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.tpcode == "y" && e.gdsid == gdsid && e.wmsno == wmsno group e by new { e1.savdptid, e1.rcvdptid, e1.wmsno, e1.bllid, e1.lnkbocino, e1.lnkbocidat, e1.times, e.gdsid } into g select new { savdptid = g.Key.savdptid, wmsno = g.Key.wmsno, bllid = g.Key.bllid, bocino = g.Key.lnkbocino, bocidat = g.Key.lnkbocidat, clsid = g.Key.times, /*checi = (from e2 in WmsDc.psSndGds_dpt_dtl * where e2.dptid == g.Key.rcvdptid && e2.dh == g.Key.lnkbocino * select e2.busid.Substring(e2.busid.Trim().Length - 1, 1)).FirstOrDefault(),*/ gdsid = g.Key.gdsid, qty = g.Sum(e => e.qty), preqty = g.Sum(e => e.qty), ckr = "", chkflg = GetN(), chkdat = "" }; var cutgds = qryAllByGdsidCang.FirstOrDefault(); #region 如果拣货的数量不够的话,要去修改配送单的数量和金额 var qrystkdtl = from e in WmsDc.stkotdtl where e.stkot.wmsbllid == cutgds.bllid && e.stkot.wmsno == cutgds.wmsno && e.gdsid == cutgds.gdsid orderby e.qty descending select e; double q = qrystkdtl.Sum(e => e.qty) - cutgds.qty; if (q > 0) { double diff = q; var stkotdtl = qrystkdtl; //减小数部分 #region 减小数部分 foreach (stkotdtl d in stkotdtl) { if (d.preqty == null) { d.preqty = d.qty; } double xtmp = d.qty * 10000 % 10000 / 10000; if (diff > 0 && diff >= xtmp) { diff -= xtmp; d.qty -= xtmp; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } else if (diff > 0 && diff < xtmp) { d.qty -= diff; diff = 0; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } } //WmsDc.SubmitChanges(); #endregion 减小数部分 //减去零散件规 #region 减去零散件规 foreach (stkotdtl d in stkotdtl) { if (d.preqty == null) { d.preqty = d.qty; } double xtmp = (double)WmsDc.ExecuteQuery <decimal>("select convert(decimal,{0}) % convert(decimal,e.cnvrto) from v_wms_pkg e where e.gdsid={1}", d.qty, d.gdsid).FirstOrDefault(); /*double xtmp = (from e in WmsDc.v_wms_pkg * where e.gdsid == d.gdsid * select Convert.ToInt32(d.qty) % e.cnvrto).FirstOrDefault();*/ if (diff > 0 && diff >= xtmp) { diff -= xtmp; d.qty -= xtmp; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } else if (diff > 0 && diff < xtmp) { d.qty -= diff; diff = 0; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } } //WmsDc.SubmitChanges(); #endregion 减去零散件规 //减去从大到小的数量 #region 减去从大到小的数量 foreach (stkotdtl d in stkotdtl) { if (d.preqty == null) { d.preqty = d.qty; } if (diff > 0 && diff >= d.qty) { diff -= d.qty; d.qty = 0; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } else if (diff > 0 && diff < d.qty) { d.qty = d.qty - diff; diff = 0; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } } WmsDc.SubmitChanges(); #endregion 减去从大到小的数量 } WmsDc.SubmitChanges(); #endregion // 写入分货表 #region 写入分货表 //var qryAllByGdsid = from e in WmsDc.stkotdtl // join e1 in WmsDc.wms_cang on new { e.stkot.wmsno, e.stkot.wmsbllid } equals new { e1.wmsno, wmsbllid = e1.bllid } // where e.stkot.wmsbllid == cutgds.bllid // && e.stkot.wmsno == cutgds.wmsno // && e.gdsid == cutgds.gdsid // && e.qty != 0 // group e by new // { // e1.savdptid, // e.stkot.rcvdptid, // e1.wmsno, // e1.bllid, // e1.lnkbocino, // e1.lnkbocidat, // e1.times, // e.gdsid // } into g // select new // { // savdptid = g.Key.savdptid, // wmsno = g.Key.wmsno, // bllid = g.Key.bllid, // bocino = g.Key.lnkbocino, // bocidat = g.Key.lnkbocidat, // clsid = g.Key.times, // checi = (from e2 in WmsDc.psSndGds_dpt_dtl // where e2.dptid == g.Key.rcvdptid && e2.dh == g.Key.lnkbocino // select e2.busid.Substring(e2.busid.Trim().Length - 1, 1)).FirstOrDefault(), // gdsid = g.Key.gdsid, // qty = g.Sum(e => e.qty), // preqty = g.Sum(e => e.qty), // ckr = "", // chkflg = GetN(), // chkdat = "" // }; ////i(wmsno, "", "拣货确认", qryAllByGdsid.ToString(), "", LoginInfo.DefSavdptid); //var arrQryAllByGdsid = qryAllByGdsid.ToArray(); //foreach (var a in arrQryAllByGdsid) //{ // if (a.checi == null) // { // iFile(cutgds.bllid + " " + cutgds.wmsno + " " + cutgds.gdsid + " "); // } //} //var qryAllByGdsidSum = from e in arrQryAllByGdsid // group e by new // { // e.savdptid, // e.wmsno, // e.bllid, // e.bocino, // e.bocidat, // e.clsid, // e.checi, // e.gdsid, // e.ckr, // e.chkflg, // e.chkdat // } into g // select new // { // g.Key.savdptid, // g.Key.wmsno, // g.Key.bllid, // g.Key.bocino, // g.Key.bocidat, // g.Key.clsid, // g.Key.checi, // g.Key.gdsid, // g.Key.ckr, // g.Key.chkflg, // g.Key.chkdat, // qty = g.Sum(e => e.qty), // preqty = g.Sum(e => e.preqty) // }; //List<wms_cutgds> lstCg = new List<wms_cutgds>(); //foreach (var tcg in qryAllByGdsidSum) //{ // wms_cutgds cg = new wms_cutgds(); // cg.bllid = tcg.bllid; // cg.bocidat = tcg.bocidat; // cg.bocino = tcg.bocino; // cg.checi = tcg.checi; // cg.chkdat = tcg.chkdat; // cg.chkflg = tcg.chkflg; // cg.ckr = tcg.ckr; // cg.clsid = tcg.clsid; // cg.gdsid = tcg.gdsid; // cg.preqty = tcg.preqty; // cg.qty = tcg.qty; // cg.savdptid = tcg.savdptid; // cg.wmsno = tcg.wmsno; // lstCg.Add(cg); //} //WmsDc.wms_cutgds.InsertAllOnSubmit(lstCg); #endregion 写入分货表 } } #endregion try { WmsDc.SubmitChanges(); scop.Complete(); return(RSucc("成功", null, "S0212")); } catch (Exception ex) { return(RErr(ex.Message, "E0059")); } } }
public ActionResult BokRetrieveGds(String wmsno, String barcode, String gdsid, String gdstype, double qty) { using (TransactionScope scop = new TransactionScope()) { //检索主表、明细表 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.gdsid == gdsid && e.gdstype == gdstype && e.barcode == barcode && e.wmsno == wmsno select e; var arrdtl = qrydtl.ToArray(); #region 检查输入参数 if (arrmst.Length <= 0) { return(RNoData("N0248")); } if (arrdtl.Length <= 0) { return(RNoData("N0249")); } wms_cang mst = arrmst[0]; ////正在生成拣货单,请稍候重试 //string quRetrv = mst.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0391" ); //} wms_cangdtl dtl = arrdtl[0]; //是否捡货单已经审核 if (mst.chkflg == GetY()) { return(RInfo("I0460")); } #endregion #region 商品登帐 if (dtl.bokflg == GetY() && dtl.bkr.Trim() != LoginInfo.Usrid) { return(RInfo("I0461", dtl.bkr)); } if (dtl.bokflg == GetN() && dtl.qty != null) { dtl.preqty = dtl.qty; } dtl.qty = Math.Round(qty, 4); dtl.pkgqty = Math.Round(qty, 4); dtl.bokflg = GetY(); dtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss"); dtl.bkr = LoginInfo.Usrid; #endregion try { WmsDc.SubmitChanges(); scop.Complete(); return(RSucc("成功", null, "S0224")); } catch (Exception ex) { return(RErr(ex.Message, "E0072")); } } }
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"); } })); }
public ActionResult BokRetrieveGds(String wmsno, String barcode, String gdsid, String gdstype, double qty) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { //检索主表、明细表 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.gdsid == gdsid && e.gdstype == gdstype && e.barcode == barcode && e.wmsno == wmsno && e.tpcode == "y" select e; var arrdtl = qrydtl.ToArray(); #region 检查输入参数 if (arrmst.Length <= 0) { return(RNoData("N0228")); } if (arrdtl.Length <= 0) { return(RNoData("N0229")); } wms_cang mst = arrmst[0]; //正在生成拣货单,请稍候重试 //string quRetrv = mst.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0117" ); //} wms_cangdtl dtl = arrdtl[0]; //是否捡货单已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0430")); } #endregion #region 商品登帐 //判断是否已经被审核 WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, dtl); if (dtl.bokflg == GetY()) { //看看是哪个审核的 string[] whoAdt = (from e in WmsDc.emp where e.empid == dtl.bkr select e.empdes).ToArray(); if (whoAdt.Count() > 0) { return(RInfo("I0125", string.Join(",", whoAdt))); } } if (dtl.bokflg == GetY() && dtl.bkr.Trim() != LoginInfo.Usrid) { return(RInfo("I0431", dtl.bkr)); } if (dtl.bokflg == GetN() && dtl.qty != null) { //dtl.preqty = dtl.qty; } if (dtl.tpcode == "n") { return(RInfo("I0118")); } if (dtl.preqty < qty && dtl.tpcode == "y") { return(RInfo("I0119")); } dtl.qty = Math.Round(qty, 4); dtl.pkgqty = Math.Round(qty, 4); //如果是206的单据,同一个商品的最后一条确认完后就不能再修改 var qryallbygdsidN1 = from e in WmsDc.wms_cangdtl where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.gdsid == gdsid //&& e.gdstype == gdstype && e.wmsno == wmsno && e.bokflg == GetN() && e.tpcode == "y" select e; int iCnt = qryallbygdsidN1.Count(); if (mst.lnkbllid.Trim() == "206" && iCnt == 0) { return(RInfo("I0120")); } dtl.bokflg = GetY(); dtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss"); dtl.bkr = LoginInfo.Usrid; try { WmsDc.SubmitChanges(); } catch (Exception ex) { if (ex.Message.IndexOf("牺牲品") > 0) { return(RInfo("E0075")); } else { return(RInfo("E0076", ex.Message)); } } if (dtl.preqty != dtl.qty) { i(wmsno, WMSConst.BLL_TYPE_RETRIEVE, "拣货商品明细确认", "应拣数量:" + dtl.preqty + ",实拣数量:" + dtl.qty, mst.qu, mst.savdptid); } #endregion #region 如果是206配送拣货的单据,在同一个拣货单里面同一商品确认完后,写入分货表 if (mst.lnkbllid.Trim() == "206") { var qryallbygdsidN = from e in WmsDc.wms_cangdtl where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.gdsid == gdsid //&& e.gdstype == gdstype && e.wmsno == wmsno && e.bokflg == GetN() && e.tpcode == "y" select e; iCnt = qryallbygdsidN.Count(); if (iCnt == 0) { var qryAllByGdsidCang = from e in WmsDc.wms_cangdtl join e1 in WmsDc.wms_cang on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid } where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.tpcode == "y" && e.gdsid == gdsid && e.wmsno == wmsno group e by new { e1.savdptid, e1.rcvdptid, e1.wmsno, e1.bllid, e1.lnkbocino, e1.lnkbocidat, e1.times, e.gdsid } into g select new { savdptid = g.Key.savdptid, wmsno = g.Key.wmsno, bllid = g.Key.bllid, bocino = g.Key.lnkbocino, bocidat = g.Key.lnkbocidat, clsid = g.Key.times, /*checi = (from e2 in WmsDc.psSndGds_dpt_dtl * where e2.dptid == g.Key.rcvdptid && e2.dh == g.Key.lnkbocino * select e2.busid.Substring(e2.busid.Trim().Length - 1, 1)).FirstOrDefault(),*/ gdsid = g.Key.gdsid, qty = g.Sum(e => e.qty), preqty = g.Sum(e => e.qty), ckr = "", chkflg = GetN(), chkdat = "" }; var cutgds = qryAllByGdsidCang.FirstOrDefault(); #region 如果拣货的数量不够的话,要去修改配送单的数量和金额 var qrystkdtl = from e in WmsDc.stkotdtl where e.stkot.wmsbllid == cutgds.bllid && e.stkot.wmsno == cutgds.wmsno && e.gdsid == cutgds.gdsid orderby Convert.ToInt32(e.stkot.rcvdptid) descending, e.qty descending select e; double q = qrystkdtl.Sum(e => e.qty) - cutgds.qty; if (q > 0) { double diff = q; var stkotdtl = qrystkdtl; //扣减stkotdtl里面的库存 RedcStkotQty(stkotdtl.ToArray(), diff); } try { WmsDc.SubmitChanges(); } catch (Exception ex) { if (ex.Message.IndexOf("牺牲品") > 0) { return(RInfo("E0075")); } else { return(RInfo("E0076", ex.Message)); } } #endregion // 写入分货表 #region 写入分货表 //var qryAllByGdsid = from e in WmsDc.stkotdtl // join e1 in WmsDc.wms_cang on new { e.stkot.wmsno, e.stkot.wmsbllid } equals new { e1.wmsno, wmsbllid = e1.bllid } // where e.stkot.wmsbllid == cutgds.bllid // && e.stkot.wmsno == cutgds.wmsno // && e.gdsid == cutgds.gdsid // && e.qty != 0 // group e by new // { // e1.savdptid, // e.stkot.rcvdptid, // e1.wmsno, // e1.bllid, // e1.lnkbocino, // e1.lnkbocidat, // e1.times, // e.gdsid // } into g // select new // { // savdptid = g.Key.savdptid, // wmsno = g.Key.wmsno, // bllid = g.Key.bllid, // bocino = g.Key.lnkbocino, // bocidat = g.Key.lnkbocidat, // clsid = g.Key.times, // checi = (from e2 in WmsDc.psSndGds_dpt_dtl // where e2.dptid == g.Key.rcvdptid && e2.dh == g.Key.lnkbocino // select e2.busid.Substring(e2.busid.Trim().Length - 1, 1)).FirstOrDefault(), // gdsid = g.Key.gdsid, // qty = g.Sum(e => e.qty), // preqty = g.Sum(e => e.qty), // ckr = "", // chkflg = GetN(), // chkdat = "" // }; ////i(wmsno, "", "拣货确认", qryAllByGdsid.ToString(), "", LoginInfo.DefSavdptid); //var arrQryAllByGdsid = qryAllByGdsid.ToArray(); //foreach (var a in arrQryAllByGdsid) //{ // if (a.checi == null) // { // iFile(cutgds.bllid + " " + cutgds.wmsno + " " + cutgds.gdsid + " "); // } //} //var qryAllByGdsidSum = from e in arrQryAllByGdsid // group e by new // { // e.savdptid, // e.wmsno, // e.bllid, // e.bocino, // e.bocidat, // e.clsid, // e.checi, // e.gdsid, // e.ckr, // e.chkflg, // e.chkdat // } into g // select new // { // g.Key.savdptid, // g.Key.wmsno, // g.Key.bllid, // g.Key.bocino, // g.Key.bocidat, // g.Key.clsid, // g.Key.checi, // g.Key.gdsid, // g.Key.ckr, // g.Key.chkflg, // g.Key.chkdat, // qty = g.Sum(e => e.qty), // preqty = g.Sum(e => e.preqty) // }; //List<wms_cutgds> lstCg = new List<wms_cutgds>(); //foreach (var tcg in qryAllByGdsidSum) //{ // wms_cutgds cg = new wms_cutgds(); // cg.bllid = tcg.bllid; // cg.bocidat = tcg.bocidat; // cg.bocino = tcg.bocino; // cg.checi = tcg.checi; // cg.chkdat = tcg.chkdat; // cg.chkflg = tcg.chkflg; // cg.ckr = tcg.ckr; // cg.clsid = tcg.clsid; // cg.gdsid = tcg.gdsid; // cg.preqty = tcg.preqty; // cg.qty = tcg.qty; // cg.savdptid = tcg.savdptid; // cg.wmsno = tcg.wmsno; // lstCg.Add(cg); //} //WmsDc.wms_cutgds.InsertAllOnSubmit(lstCg); #endregion 写入分货表 } } #endregion try { try { WmsDc.SubmitChanges(); } catch (Exception ex) { if (ex.Message.IndexOf("牺牲品") > 0) { return(RInfo("E0075")); } else { return(RInfo("E0076", ex.Message)); } } scop.Complete(); return(RSucc("成功", null, "S0212")); } catch (Exception ex) { return(RErr(ex.Message, "E0059")); } } }
public ActionResult CheckCangwei(String wmsno, String barcode, String newbarcode, String tpcode) { using (TransactionScope scop = new TransactionScope()) { wms_cangwei oldCw = null; //如果旧仓位不为空,就需要查询出就仓位,以便修改其仓位托盘tpflg标志 if (!string.IsNullOrEmpty(barcode.Trim())) { //判断仓位码是否有效 if (!IsExistBarcode(barcode)) { return(RInfo("I0396", barcode.Trim())); } oldCw = GetCangWei(barcode); } //判断仓位码是否有效 if (!string.IsNullOrEmpty(newbarcode) && !IsExistBarcode(newbarcode)) { return(RInfo("I0397", newbarcode.Trim())); } //主表 wms_cang cang = GetCangMst(wmsno); //明细表 var qrydtl = GetCangDtl(wmsno) .Where(e => e.barcode.Trim() == barcode.Trim() && e.tpcode.Trim() == tpcode.Trim()); var arrqrydtl = qrydtl.ToArray(); // 判断明细的分区是否是同一个分区,而且newbarcode的分区也在商品的分区内 string initQu = null; foreach (wms_cangdtl dtl in arrqrydtl) { string gdsqu = GetQuByGdsid(dtl.gdsid, LoginInfo.DefStoreid).FirstOrDefault(); if (string.IsNullOrEmpty(initQu)) { initQu = gdsqu; } if (initQu != gdsqu) { return(RInfo("I0398")); } } if (initQu != newbarcode.Substring(0, 2)) { return(RInfo("I0399")); } #region 效性检查 //检查单号是否有效 if (cang == null) { return(RNoData("单号无效", "N0213")); } ////正在生成拣货单,请稍候重试 //string quRetrv = cang.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0400" ); //} //检查是否已经审核 if (cang.chkflg == GetY()) { return(RInfo("I0401")); } //未查找到托盘的正确仓位 if (arrqrydtl.Length <= 0) { return(RNoData("未查找到托盘的正确仓位", "N0214")); } //检查同一个托盘是否都已经上架 if (arrqrydtl[0].bokflg == GetY()) { return(RInfo("I0402")); } #endregion //查看新仓位是否不为推荐仓位 wms_cangwei cw = null; if (!String.IsNullOrEmpty(newbarcode) && barcode.Trim() != newbarcode.Trim()) { cw = GetCangWei(newbarcode); if (cw == null) { return(RNoData("N0215", newbarcode)); } if (!savdpts.Contains(cw.savdptid.Trim())) { return(RInfo("I0403", newbarcode)); } if (!qus.Contains(cw.qu.Trim())) { return(RInfo("I0404", newbarcode)); } if (oldCw != null && cw.tjflg == GetY()) { return(RInfo("I0405", newbarcode)); } //修改新仓位标记tpflg=GetY() cw.tpflg = GetY(); //修改旧仓位tpflg=GetN() if (oldCw != null) { oldCw.tpflg = GetN(); } WmsDc.SubmitChanges(); } #region 架托盘到仓位 foreach (wms_cangdtl cangdtl in arrqrydtl) { cangdtl.bkr = LoginInfo.Usrid; cangdtl.bokflg = GetY(); cangdtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss"); if (cw != null) { cangdtl.oldbarcode = cangdtl.barcode; cangdtl.barcode = newbarcode; } } try { WmsDc.SubmitChanges(); //done: 判断是否已经上架单明细已经审核完毕,完毕后就直接审核整单 //明细表 wms_cangdtl[] arrqryaldtl = GetCangDtl(wmsno) .Where(e => e.bokflg == GetN()) .ToArray(); if (arrqryaldtl.Length == 0) { // done: 判断盘点收货单有没有整单审核,提示不能上架 wms_bllmst bllmst = GetBllMst(wmsno); if (bllmst == null) { return(RInfo("I0406")); } if (bllmst.chkflg == GetN()) { return(RInfo("I0407")); } #region 审核整单 JsonResult ar = (JsonResult)AdtUpShelf(wmsno); ResultMessage rm = (ResultMessage)ar.Data; if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS) { return(ar); } #endregion 审核整单 } scop.Complete(); return(RSucc("扫描仓位码和托盘码匹配成功!", null, "S0196")); } catch (Exception ex) { return(RErr("异常错误!" + ex.Message, "E0053")); } #endregion } }