/// <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")); } } }
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")); } } }
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"); } }))); }
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 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")); } } }
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")); } } }
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")); } } }
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")); } } }
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"); } }))); }
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 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")); } } }
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")); } }
/// <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")); } } }
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")); } }
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")); } } }
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")); } } }
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")); } } }