/// <summary> /// 推荐仓位 /// </summary> /// <returns></returns> protected String SuggestBarcode(String qu, Action <wms_cangwei> action) { String barcode = null; wms_cangwei cw = null; /*String[] barcodes = GetEmptyBarcodeByQu(qu); * var qrybar = from e in WmsDc.wms_cangwei * where e.tjflg == GetY() && e.isvld == GetY() && e.tpflg == GetN() * && qu == e.qu && barcodes.Contains(e.barcode) * orderby e.barcode * select e;*/ var qrybar = from e in WmsDc.wms_cangwei where savdpts.Contains(e.savdptid.Trim()) && e.qu == qu && e.isvld == GetY() && e.tjflg == GetY() && e.tpflg == GetN() && e.kcflg == WMSConst.KC_FLG_NONQTY orderby e.barcode select e; var arrqrybar = qrybar.Take(1).ToArray(); if (arrqrybar.Length > 0) { cw = arrqrybar[0]; barcode = cw.barcode; action(cw); } else { barcode = null; } return(barcode); }
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); }
public ActionResult MdRetBll(String bllno, String gdsids, String qtys, String rsns) { //拆分货号,数量 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 = 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.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 = ""; dtl.vlddat = ""; dtl.bcd = r.Bcd; dtl.tpcode = ""; dtl.bkr = ""; dtl.bokflg = GetN(); dtl.bokdat = ""; 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.SubmitChanges(); return(RSucc("修改成功", null, "S0146")); } catch (Exception ex) { return(RErr(ex.Message, "E0043")); } }
public ActionResult MkRetBll(String dptid, String hndno, String gdsids, String qtys, String rsns, String qu) { /*if(GetCsQuByDptid(dptid, LoginInfo.DefStoreid)!=qu.Trim()){ * return RInfo("I0468"); * }*/ if (string.IsNullOrEmpty(qu)) { return(RInfo("I0307")); } //检查是否有残损库权限 if (String.IsNullOrEmpty(LoginInfo.DefCsSavdptid)) { return(RInfo("I0308")); } //判断分店是不是操作的仓库(残损) if (!IsInSavdptid(dptid)) { return(RInfo("I0309")); } //拆分货号,数量 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; //得到分区 //GetRealteQuResult rq= GetRealteQu("all", LoginInfo.DefCsSavdptid); //手工单号不能重复 if (HasHndno(hndno)) { return(RInfo("I0310", hndno)); } //开始制单 return(MakeNewBllNo(LoginInfo.DefCsSavdptid, qu, WMSConst.BLL_TYPE_RETCANG, (bllno) => { //生成主单 wms_cang_109 mst = new wms_cang_109(); mst.wmsno = bllno; mst.bllid = WMSConst.BLL_TYPE_RETCANG; mst.savdptid = LoginInfo.DefCsSavdptid; mst.prvid = ""; mst.qu = qu; ////正在生成拣货单,请稍候重试 //string quRetrv = mst.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RRInfo( "I0311" ); //} mst.rcvdptid = dptid; mst.times = "1"; mst.lnkbocino = ""; mst.lnkbocidat = ""; mst.mkr = LoginInfo.Usrid; mst.mkedat = GetCurrentDay(); mst.mkedat2 = GetCurrentDate(); mst.ckr = ""; mst.chkflg = GetN(); mst.chkdat = ""; mst.opr = LoginInfo.Usrid; mst.brief = ""; mst.lnkbllid = ""; mst.lnkno = hndno; mst.lnkbrief = ""; //生成明细单 int i = 0; List <wms_cangdtl_109> lstDtl = new List <wms_cangdtl_109>(); foreach (ParamRetBll r in param) { string dptid1 = (from e in WmsDc.gds where e.gdsid == r.Gdsid select e.dptid.Trim()).FirstOrDefault(); if (GetCsQuByDptid(dptid1, LoginInfo.DefStoreid) != qu.Trim()) { return RRInfo("I0468"); } 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) { rm.ResultObject = null; return RRInfo("I0454", r.Gdsid); } 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 = ""; dtl.vlddat = ""; dtl.bcd = r.Bcd; dtl.tpcode = ""; dtl.bkr = ""; dtl.bokflg = GetN(); dtl.bokdat = ""; dtl.preqty = null; dtl.brfdtl = r.Rsn.ToString(); lstDtl.Add(dtl); //修改推荐仓位标志 i++; } //done 判断商品是否在同一个部门 WmsDc.wms_cang_109.InsertOnSubmit(mst); WmsDc.wms_cangdtl_109.InsertAllOnSubmit(lstDtl); rm.ResultObject = bllno; return rm; })); }
public ActionResult AdRetBll(String bllno, String dptid, String hndno, String gdsids, String qtys, String rsns) { ////正在生成拣货单,请稍候重试 //string quRetrv = GetQuByDptid(dptid, LoginInfo.DefStoreid); //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0297" ); //} //检查是否有残损库权限 if (String.IsNullOrEmpty(LoginInfo.DefCsSavdptid)) { return(RInfo("I0298")); } 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.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.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 = ""; dtl.vlddat = ""; dtl.bcd = r.Bcd; dtl.tpcode = ""; dtl.bkr = ""; dtl.bokflg = GetN(); dtl.bokdat = ""; 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.SubmitChanges(); return(RSucc("成功", null, "S0142")); } catch (Exception ex) { return(RErr(ex.Message, "E0041")); } }
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")); }
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 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 } }
public ActionResult MdARetBll(String bllno, String gdsid, String qty, String rsn) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { ////正在生成拣货单,请稍候重试 //string quRetrv = GetQuByGdsid(gdsid, LoginInfo.DefStoreid).FirstOrDefault(); //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo("I0312"); //} //拆分货号,数量 JsonResult jr = (JsonResult)_MkParam(gdsid, qty, rsn); 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("N0153")); } wms_cang_109 mst = arrqrymst[0]; //查询返仓单明细 var qrydtl = from e in WmsDc.wms_cangdtl_109 join e1 in WmsDc.wms_cang_109 on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid } where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG && e.gdsid == param[0].Gdsid select e; var arrqrydtl = qrydtl.ToArray(); if (arrqrydtl.Length <= 0) { return(RNoData("N0154")); } if (rsn.Trim() == "") { return(RInfo("I0313")); } //查询是不是本人操作 if (mst.mkr.Trim() != LoginInfo.Usrid) { return(RInfo("I0314")); } //查询是否有残损库权限 if (mst.savdptid.Trim() != LoginInfo.DefCsSavdptid.Trim()) { return(RInfo("I0315")); } //返仓单是否已经审核,审核不允许修改 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0316")); } //插入单据明细 //生成明细单 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 + ",推荐仓位为空", "I0317")); } 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++; } wms_cangdtl_109 mddtl = arrqrydtl[0]; mddtl.pkgqty = lstDtl[0].pkgqty; mddtl.qty = lstDtl[0].qty; if (!string.IsNullOrEmpty(rsn)) { mddtl.brfdtl = rsn; } mddtl.bokdat = GetCurrentDate(); /*WmsDc.wms_cangdtl_109.DeleteAllOnSubmit(arrqrydtl); * if (lstDtl.Count > 0) * { * WmsDc.wms_cangdtl_109.InsertAllOnSubmit(lstDtl); * } * else * { * WmsDc.wms_cang_109.DeleteOnSubmit(mst); * }*/ 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, "S0145")); } catch (Exception ex) { return(RErr(ex.Message, "E0042")); } } }
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 } }