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")); } }
private ActionResult _MakeParam(String wmsno, String oldbarcodes, String gdsids, String gdstypes, String bthnos, String vlddats, String qtys, String rsns) { String[] oldbarcode = oldbarcodes.Split(','); String[] gdsid = gdsids.Split(','); String[] qty = qtys.Split(','); String[] gdstype = gdstypes.Split(','); String[] vlddat = vlddats.Split(','); String[] bthno = bthnos.Split(','); String[] rsn = rsns.Split(','); //String[] newsbarcode = newbarcodes.Split(','); List <wms_cangdtl_111> lstDtl = new List <wms_cangdtl_111>(); if ((oldbarcode.Length != gdsid.Length) && (oldbarcode.Length != qty.Length) && (oldbarcode.Length != gdstype.Length) && (oldbarcode.Length != rsn.Length)) { return(RInfo("I0173")); } int i = 0; foreach (String s in oldbarcode) { if (!String.IsNullOrEmpty(s)) { //判断gdsid和barcode是不是在一个区 String[] qu = GetQuByGdsid(gdsid[i], LoginInfo.DefStoreid); if (qu == null) { return(RInfo("I0174")); } if (!qu.Contains(s.Substring(0, 2))) { return(RInfo("I0176", gdsid[i], String.Join(",", qu))); } //判断分区是否有效 if (!IsExistBarcode(s)) { return(RInfo("I0177", s.Trim())); } wms_cangdtl_111 dtl = new wms_cangdtl_111(); dtl.wmsno = wmsno; dtl.bllid = WMSConst.BLL_TYPE_PROFITORLOSS; dtl.rcdidx = i + 1; dtl.barcode = s; //判断分区是否有效 if (!IsExistBarcode(dtl.barcode)) { return(RInfo("I0178", s.Trim())); } dtl.gdsid = gdsid[i]; dtl.gdstype = gdstype[i]; dtl.pkgid = "01"; double fQty = 0; if (!double.TryParse(qty[i], out fQty)) { return(RInfo("I0179", gdsid[i], qty[i])); } dtl.qty = Math.Round(fQty, 4, MidpointRounding.AwayFromZero); dtl.preqty = Math.Round(fQty, 4, MidpointRounding.AwayFromZero); dtl.pkgqty = Math.Round(fQty, 4, MidpointRounding.AwayFromZero); dtl.gdstype = gdstype[i]; dtl.bthno = String.IsNullOrEmpty(bthno[i]) ? "1" : bthno[i]; dtl.vlddat = String.IsNullOrEmpty(vlddat[i]) ? GetCurrentDay() : vlddat[i]; JsonResult jr = (JsonResult)GetBcdByGdsid(gdsid[i]); ResultMessage rm = (ResultMessage)jr.Data; if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS) { return(RInfo("I0180", gdsid[i])); } bcd[] b = (bcd[])rm.ResultObject; dtl.bcd = b[0].bcd1; dtl.bkr = ""; dtl.bokflg = GetN(); dtl.bokdat = GetCurrentDate(); dtl.brfdtl = rsn[i]; lstDtl.Add(dtl); i++; } } return(RSucc("成功", lstDtl.ToArray(), "S0096")); }
/// <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")); } } }
/// <summary> /// 修改损溢单 /// </summary> /// <param name="wmsno"></param> /// <param name="gdsid"></param> /// <param name="gdstype"></param> /// <param name="newbarcode">新仓位码</param> /// <param name="rcdidx"></param> /// <param name="qty"></param> /// <returns></returns> public ActionResult MdAPrftOLss(String wmsno, String gdsid, String newbarcode, String gdstype, int rcdidx, double qty, String rsn) { //检查单号是否存在 var qrymst = from e in WmsDc.wms_cang_111 where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS && qus.Contains(e.qu.Trim()) select e; var arrqrymst = qrymst.ToArray(); var qrydtl = from e in WmsDc.wms_cangdtl_111 where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS && e.gdsid == gdsid && e.rcdidx == rcdidx orderby e.rcdidx descending select e; var arrqrydtl = qrydtl.ToArray(); //检查barcode是否有效 if (!IsExistBarcode(newbarcode)) { return(RInfo("I0191", newbarcode)); } //单据是否找到 if (arrqrymst.Length <= 0) { return(RNoData("N0116")); } //检查是否有数据权限 wms_cang_111 mst = arrqrymst[0]; //正在生成拣货单,请稍候重试 string quRetrv = mst.qu; if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) { return(RInfo("I0192")); } if (!qus.Contains(mst.qu.Trim())) { return(RInfo("I0193")); } //检查单号是否已经审核 if (mst.chkflg == GetY()) { return(RInfo("I0194")); } //未找到该商品 if (arrqrydtl.Length <= 0) { return(RNoData("N0117")); } //是否是本人制单 if (!IsSameLogin(mst.mkr)) { return(RInfo("I0195")); } //判断QTY应该为正为负数 if (mst.times.Trim() == "+" && qty < 0) { return(RInfo("I0196")); } if (mst.times.Trim() == "-" && qty > 0) { return(RInfo("I0197")); } if (mst.times.Trim() == "-" && rsn.Trim() == "") { return(RInfo("I0198", gdsid)); } //判断新仓位码是否和主单是一个区 if (mst.qu.Trim() != newbarcode.Substring(0, 2)) { return(RInfo("I0199")); } //修改数量 arrqrydtl[0].barcode = newbarcode; arrqrydtl[0].qty = Math.Round(qty, 4, MidpointRounding.AwayFromZero); arrqrydtl[0].pkgqty = Math.Round(qty, 4, MidpointRounding.AwayFromZero); arrqrydtl[0].preqty = Math.Round(qty, 4, MidpointRounding.AwayFromZero); if (!String.IsNullOrEmpty(gdstype)) { arrqrydtl[0].gdstype = gdstype; } //如果是报损,判断是否有库存 if (mst.times.Trim() == "-") { //修改数量 wms_cangdtl_111 dtl = arrqrydtl[0]; //得到一个商品的库存数量 GdsInBarcode[] gb = GetAGdsQtyInBarcode(dtl.barcode, gdsid, dtl.gdstype); double bqty = (gb == null || gb.Length <= 0) ? 0 : gb[0].sqty; double ktqty = Math.Abs(bqty) + Math.Abs(dtl.qty); //可调数量 = 库存数量+本单该商品的数量 //如果 需调整数量 > 可调数量 if (Math.Abs(qty) > Math.Abs(ktqty)) { return(RInfo("I0200", qty, ktqty)); } dtl.brfdtl = rsn.ToString(); //return RInfo( "I0201",gdsid ,arrqrydtl[0].barcode ); } try { WmsDc.SubmitChanges(); return(RSucc("成功", arrqrydtl[0], "S0101")); } catch (Exception ex) { return(RErr(ex.Message, "E0025")); } }