public ActionResult BokBozBllGds(String wmsno, /* String stkouno,*/ String rcvdptid, String gdsid, double qty /*, int? rcdidx*/) { /* * 1、得到wmsno、rcvdptid对应的所有单据 * 2、得到wmsno、rcvdptid和gdsid对应的所有明细 * 3、判断这些主单是否已经有一张以上的单据已经审核 * 4、判断该商品是否是本人播种 * 5、判断这些单据的所有明细是否都已经播种完毕,播种完毕后就修改单据的审核标记,包括修改无货商品的数量 */ using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) // 事务逻辑开始 { // 得到货号 gdsid = GetGdsidByGdsidOrBcd(gdsid); ////正在生成拣货单,请稍候重试 //string quRetrv = GetQuByGdsid(gdsid, LoginInfo.DefStoreid).FirstOrDefault(); //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0375" ); //} if (gdsid == null) //货号为空,表示未找到该商品 { return(RInfo("I0376")); } String Dat = GetCurrentDay(); //得到当前日期 try { #region 1、得到wmsno、rcvdptid、gdsid对应的所有单据 //得到wmsno、rcvdptid、gdsid对应的所有单据 stkot[] stkots = GetStkots(wmsno, rcvdptid, gdsid); //未找到单据 if (stkots.Length == 0) { return(RNoData("N0177")); } #endregion 1、得到wmsno、rcvdptid对应的所有单据 #region 2、得到wmsno、rcvdptid和gdsid对应的所有明细 string[] stkounos = stkots.Select(e => e.stkouno.Trim()).ToArray(); //得到相关单据号和商品编码对应的明细 stkotdtl[] stkotdtls = GetStkdtlsByStkounos(wmsno, gdsid, stkounos).OrderByDescending(e => e.preqty).ToArray(); //未找到对应的明细信息 if (stkotdtls.Length == 0) { return(RNoData("N0178")); } //判断preqty是否为null,为null就填qty foreach (stkotdtl dtl in stkotdtls) { if (dtl.preqty == null) { dtl.preqty = dtl.qty; } } WmsDc.SubmitChanges(); #endregion 2、得到wmsno、rcvdptid和gdsid对应的所有明细 #region 3、判断这些主单是否已经有一张以上的单据已经审核 foreach (stkot s in stkots) { if (s.chkflg == GetY()) { return(RInfo("I0377", s.stkouno)); } } #endregion 3、判断这些主单是否已经有一张以上的单据已经审核 #region 4、判断该商品是否是本人播种 //查看该商品是否已经被非本人确认 foreach (stkotdtl stkdtl in stkotdtls) { if (stkdtl.bzflg == GetY() && stkdtl.bzr != LoginInfo.Usrid) { return(RInfo("I0378", stkdtl.bzr)); } } #endregion 4、判断该商品是否是本人播种 #region 修改这些明细的播种标记 //计算这些单据的应该播种数量是否大于实播种数量 #region 计算这些单据的应该播种数量是否大于实播种数量 double?preqty = stkotdtls.Sum(e => e.preqty); if (preqty < qty) { //如果实际播种数量大于应播数量就退出,不能继续 return(RInfo("I0379", qty, preqty)); } else if (preqty > qty) { //如果实际播种数量小于应播数量,就修改实际的播种数量 double difQty = preqty.Value - qty; //得到差异数量 foreach (stkotdtl dtl in stkotdtls) { if (difQty > 0) { if (dtl.preqty >= difQty) { /* * preqty = preqty==null ? qty : preqty * * 公式:taxamt = qty*prc*taxrto * amt = qty*prc * salamt = qty*salprc * patamt = qty*taxprc * stotcstamt = qty*stotcstprc * */ double qty1 = dtl.preqty.Value - difQty; dtl.qty = Math.Round(qty1, 4, MidpointRounding.AwayFromZero); dtl.pkgqty = Math.Round(qty1, 4, MidpointRounding.AwayFromZero); dtl.taxamt = Math.Round(qty * dtl.prc * dtl.taxrto, 4); dtl.amt = Math.Round(qty * dtl.prc, 4); dtl.salamt = qty * dtl.salprc; dtl.patamt = Math.Round(qty * dtl.taxprc, 4); dtl.stotcstamt = Math.Round(qty * dtl.stotcstprc.Value, 4); difQty = 0; //记录差异 GetRealteQuResult qu = GetRealteQu(dtl.stkot.dptid, LoginInfo.DefSavdptid); Log.i(LoginInfo.Usrid, Mdlid, dtl.stkot.stkouno, dtl.stkot.bllid, "播种审核", gdsid.Trim() + ":应播:" + dtl.preqty.Value + ";实播:" + qty1, qu.qu, qu.savdptid); } else if (dtl.preqty < difQty) { dtl.qty = 0; dtl.pkgqty = 0; dtl.taxamt = 0; dtl.amt = 0; dtl.salamt = 0; dtl.patamt = 0; dtl.stotcstamt = 0; difQty -= dtl.preqty.Value; //记录差异 GetRealteQuResult qu = GetRealteQu(dtl.stkot.dptid, LoginInfo.DefSavdptid); Log.i(LoginInfo.Usrid, Mdlid, dtl.stkot.stkouno, dtl.stkot.bllid, "播种审核", gdsid.Trim() + ":应播:" + dtl.preqty.Value + ";实播:" + 0, qu.qu, qu.savdptid); } } } WmsDc.SubmitChanges(); } #endregion 计算这些单据的应该播种数量是否大于实播种数量 //修改稿明细的播种标记 #region 修改稿明细的播种标记 foreach (stkotdtl dtl in stkotdtls) { dtl.bzdat = GetCurrentDate(); dtl.bzr = LoginInfo.Usrid; dtl.bzflg = GetY(); } WmsDc.SubmitChanges(); #endregion 修改稿明细的播种标记 #endregion 修改这些明细的播种标记 #region 5、判断这些单据的所有明细是否都已经播种完毕,播种完毕后就修改单据的审核标记,包括修改无货商品的数量 //判断这些单据的所有明细是否都已经播种完毕 foreach (stkot s in stkots) { WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, s); if (s.chkflg == GetN()) { bool hasAllBz = !(from e1 in WmsDc.stkotdtl where e1.stkouno == s.stkouno && e1.bzflg == GetN() && e1.qty > 0 select 1).Any(); if (hasAllBz) //如果都已经播种完了 { CkBzFlg(s); i(s.stkouno, s.bllid, "stkouno:" + s.stkouno + ", chkflg:" + s.chkflg + ", bzflg:" + s.bzflg, "", "", ""); } } } WmsDc.SubmitChanges(); scop.Complete(); return(RSucc("成功", null, "S0163")); #endregion 5、判断这些单据的所有明细是否都已经播种完毕,播种完毕后就修改单据的审核标记,包括修改无货商品的数量 } catch (Exception ex) { return(RErr(ex.Message, "E0050")); } } // 事务逻辑结束 #region 老的播种逻辑 //using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) //{ // gdsid = GetGdsidByGdsidOrBcd(gdsid); // if (gdsid == null) // { // return RInfo( "I0380" ); // } // String Dat = GetCurrentDay(); // var qry = from e in WmsDc.stkot // where e.stkouno == stkouno // && e.bllid == WMSConst.BLL_TYPE_DISPATCH // && dpts.Contains(e.dptid.Trim()) // && e.savdptid == LoginInfo.DefSavdptid // && e.rcvdptid == rcvdptid // select e; // var arrqry = qry.ToArray(); // if (arrqry.Length <= 0) // { // return RNoData("N0179"); // } // var stkotgds = arrqry[0]; // if (wmsno == null) // { // wmsno = stkotgds.wmsno; // } // if (stkotgds.chkflg == GetY()) // { // return RInfo( "I0381" ); // } // /*if (stkotgds.bzflg == GetY()) // { // return RInfo( "I0382" ); // }*/ // var qrydtl = from e in stkotgds.stkotdtl // where e.gdsid.Trim() == gdsid.Trim() && e.rcdidx == rcdidx // select e; // var arrqrydtl = qrydtl.ToArray(); // if (arrqrydtl.Length <= 0) // { // return RNoData("N0180"); // } // stkotdtl stkdtl = arrqrydtl[0]; // double? preqty = stkdtl.preqty; // if (stkdtl.preqty == null) ///如果应收数量为空,就把qty中的数量填入其中 // { // stkdtl.preqty = stkdtl.qty; // preqty = stkdtl.qty; // } // if (preqty < qty) //如果实收数量大于应收数量就退出 // { // return RInfo( "I0383" ); // } // if (preqty != qty) // { // GetRealteQuResult qu = GetRealteQu(stkotgds.dptid, LoginInfo.DefSavdptid); // Log.i(LoginInfo.Usrid, Mdlid, stkotgds.stkouno, stkotgds.bllid, "播种审核", // gdsid.Trim() + ":应播:" + preqty + ";实播:" + qty, // qu.qu, qu.savdptid); // } // //查看该商品是否已经被非本人确认 // if (stkdtl.bzflg == GetY() && stkdtl.bzr != LoginInfo.Usrid) // { // return RInfo( "I0384",stkdtl.bzr ); // } // #region 检查参数有效性 // if (arrqry == null) // { // return RInfo( "I0385" ); // } // if (stkdtl == null) // { // return RInfo( "I0386" ); // } // #endregion // //修改审核标记 // try // { // /* // * preqty = preqty==null ? qty : preqty // * // * 公式:taxamt = qty*prc*taxrto // * amt = qty*prc // * salamt = qty*salprc // * patamt = qty*taxprc // * stotcstamt = qty*stotcstprc // * // */ // stkdtl.qty = Math.Round(qty, 4, MidpointRounding.AwayFromZero); // stkdtl.pkgqty = Math.Round(qty, 4, MidpointRounding.AwayFromZero); // stkdtl.bzdat = GetCurrentDate(); // stkdtl.bzr = LoginInfo.Usrid; // stkdtl.bzflg = GetY(); // stkdtl.taxamt = Math.Round(qty * stkdtl.prc * stkdtl.taxrto, 4); // stkdtl.amt = Math.Round(qty * stkdtl.prc, 4); // stkdtl.salamt = qty * stkdtl.salprc; // stkdtl.patamt = Math.Round(qty * stkdtl.taxprc, 4); // stkdtl.stotcstamt = Math.Round(qty * stkdtl.stotcstprc.Value, 4); // //判断改单据是否已经全部商品已经确认,全部确认后的,实收商品总数和应收商品总数相同就直接修改主单的审核标记 // /*double? sqty = stkotgds // .stkotdtl // .Where(e=>e.bzflg==GetY()) // .Sum(e=>e.qty==null?0:e.qty); // double? spreqty = stkotgds.stkotdtl.Sum(e=>e.preqty==null?e.qty:e.preqty); // if(sqty==spreqty){ // stkotgds.chkflg = GetY(); // stkotgds.chkdat = Dat; // stkotgds.ckr = LoginInfo.Usrid; // stklst astklst = new stklst(); // astklst.stkouno = stkotgds.stkouno; // WmsDc.stklst.InsertOnSubmit(astklst); // }*/ // WmsDc.SubmitChanges(); // ///如果明细全部播种完 // ///就修改审核标记 // ///和播种标记 // double sqtycnt = stkotgds // .stkotdtl // .Where(e => e.bzflg == GetY() && Math.Round(e.qty, 2, MidpointRounding.AwayFromZero) != 0) // .Count(); // double spreqtycnt = stkotgds // .stkotdtl // .Where(e => Math.Round(e.qty, 2, MidpointRounding.AwayFromZero) != 0) // .Count(); // d(wmsno, WMSConst.BLL_TYPE_UPBLL, "审核播种商品", "sqtycnt=" + sqtycnt + "&spreqtycnt=" + spreqtycnt, "", LoginInfo.DefSavdptid); // if (sqtycnt == spreqtycnt) // { // CkBzFlg(stkotgds); // //查看有没有明细为空的单据,直接修改播种标记 // var qryZeroBz = from e in WmsDc.stkotdtl // where e.stkot.wmsno == wmsno && e.stkot.wmsbllid == WMSConst.BLL_TYPE_RETRIEVE // group e by e.stkouno into g // select new // { // stkouno = g.Key, // sqty = g.Sum(e => e.qty) // }; // qryZeroBz = qryZeroBz.Where(e => e.sqty == 0); // var qryZeroBzmst = from e in WmsDc.stkot // join e1 in qryZeroBz on e.stkouno equals e1.stkouno // where e.chkflg != GetY() // select e; // foreach (var q in qryZeroBzmst) // { // CkBzFlg(q); // foreach (var dl in q.stkotdtl) // { // dl.bzflg = GetY(); // dl.bzdat = GetCurrentDate(); // dl.bzr = LoginInfo.Usrid; // } // } // } // WmsDc.SubmitChanges(); // scop.Complete(); // return RSucc("成功", null, "S0164"); // } // catch (Exception ex) // { // return RErr(ex.Message, "E0051"); // } //} #endregion 老的播种逻辑 }
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 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 DlPrftOLssBll(String wmsno) { 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 select e; var arrqrydtl = qrydtl.ToArray(); int iDtlCount = arrqrydtl.Length; //单据是否找到 if (arrqrymst.Length <= 0) { return(RNoData("N0115")); } //检查是否有数据权限 wms_cang_111 mst = arrqrymst[0]; //正在生成拣货单,请稍候重试 string quRetrv = mst.qu; if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) { return(RInfo("I0187")); } if (!qus.Contains(mst.qu.Trim())) { return(RInfo("I0188")); } //是否是本人制单 if (!IsSameLogin(mst.mkr)) { return(RInfo("I0189")); } //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0190")); } //删除单据明细 WmsDc.wms_cangdtl_111.DeleteAllOnSubmit(arrqrydtl); WmsDc.wms_cang_111.DeleteAllOnSubmit(arrqrymst); iDelCangDtl111(arrqrydtl, mst); iDelCangMst111(mst); //删除主单据 try { //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0207")); } WmsDc.SubmitChanges(); if (iDtlCount > 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")); } } scop.Complete(); return(RSucc("成功", null, "S0100")); } catch (Exception ex) { return(RErr(ex.Message, "E0024")); } } }
/// <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 BokRetrieveGds(String wmsno, String barcode, String gdsid, String gdstype, String bthno, String vlddat, double qty) { //检索主表、明细表 var qrymst = from e in WmsDc.wms_cang where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.wmsno == wmsno select e; var arrmst = qrymst.ToArray(); var qrydtl = from e in WmsDc.wms_cangdtl where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.gdsid == gdsid.Trim() && e.gdstype == gdstype.Trim() && e.bthno == bthno.Trim() && e.vlddat == vlddat.Trim() && e.barcode == barcode.Trim() && e.wmsno == wmsno select e; var arrdtl = qrydtl.ToArray(); #region 检查输入参数 if (arrmst.Length <= 0) { return(RNoData("N0248")); } if (arrdtl.Length <= 0) { return(RNoData("N0249")); } wms_cang mst = arrmst[0]; ////正在生成拣货单,请稍候重试 //string quRetrv = mst.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0391" ); //} wms_cangdtl dtl = arrdtl[0]; //是否捡货单已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0460")); } #endregion #region 商品登帐 //判断是否已经被审核 WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, dtl); if (dtl.bokflg == GetY()) { //看看是哪个审核的 string[] whoAdt = (from e in WmsDc.emp where e.empid == dtl.bkr select e.empdes).ToArray(); if (whoAdt.Count() > 0) { return(RInfo("I0125", string.Join(",", whoAdt))); } } if (dtl.bokflg == GetY() && dtl.bkr.Trim() != LoginInfo.Usrid) { return(RInfo("I0461", dtl.bkr)); } if (dtl.bokflg == GetN() && dtl.qty != null) { dtl.preqty = dtl.qty; } // 确认数量大于应拣数量 if (qty > dtl.preqty) { return(RInfo("i0473")); } dtl.qty = Math.Round(qty, 4); dtl.pkgqty = Math.Round(qty, 4); dtl.bokflg = GetY(); dtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss"); dtl.bkr = LoginInfo.Usrid; #endregion try { try { WmsDc.SubmitChanges(); } catch (Exception ex) { if (ex.Message.IndexOf("牺牲品") > 0) { return(RInfo("E0075")); } else { return(RInfo("E0076", ex.Message)); } } return(RSucc("成功", null, "S0224")); } catch (Exception ex) { return(RErr(ex.Message, "E0072")); } }
public ActionResult 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 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 = 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, s, 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.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 = arrqrymst.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 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 BokRetrieveGds(String wmsno, String barcode, String gdsid, String gdstype, double qty) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { //检索主表、明细表 var qrymst = from e in WmsDc.wms_cang where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.wmsno == wmsno select e; var arrmst = qrymst.ToArray(); var qrydtl = from e in WmsDc.wms_cangdtl where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.gdsid == gdsid && e.gdstype == gdstype && e.barcode == barcode && e.wmsno == wmsno && e.tpcode == "y" select e; var arrdtl = qrydtl.ToArray(); #region 检查输入参数 if (arrmst.Length <= 0) { return(RNoData("N0228")); } if (arrdtl.Length <= 0) { return(RNoData("N0229")); } wms_cang mst = arrmst[0]; //正在生成拣货单,请稍候重试 //string quRetrv = mst.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0117" ); //} wms_cangdtl dtl = arrdtl[0]; //是否捡货单已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0430")); } #endregion #region 商品登帐 //判断是否已经被审核 WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, dtl); if (dtl.bokflg == GetY()) { //看看是哪个审核的 string[] whoAdt = (from e in WmsDc.emp where e.empid == dtl.bkr select e.empdes).ToArray(); if (whoAdt.Count() > 0) { return(RInfo("I0125", string.Join(",", whoAdt))); } } if (dtl.bokflg == GetY() && dtl.bkr.Trim() != LoginInfo.Usrid) { return(RInfo("I0431", dtl.bkr)); } if (dtl.bokflg == GetN() && dtl.qty != null) { //dtl.preqty = dtl.qty; } if (dtl.tpcode == "n") { return(RInfo("I0118")); } if (dtl.preqty < qty && dtl.tpcode == "y") { return(RInfo("I0119")); } dtl.qty = Math.Round(qty, 4); dtl.pkgqty = Math.Round(qty, 4); //如果是206的单据,同一个商品的最后一条确认完后就不能再修改 var qryallbygdsidN1 = from e in WmsDc.wms_cangdtl where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.gdsid == gdsid //&& e.gdstype == gdstype && e.wmsno == wmsno && e.bokflg == GetN() && e.tpcode == "y" select e; int iCnt = qryallbygdsidN1.Count(); if (mst.lnkbllid.Trim() == "206" && iCnt == 0) { return(RInfo("I0120")); } dtl.bokflg = GetY(); dtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss"); dtl.bkr = LoginInfo.Usrid; try { WmsDc.SubmitChanges(); } catch (Exception ex) { if (ex.Message.IndexOf("牺牲品") > 0) { return(RInfo("E0075")); } else { return(RInfo("E0076", ex.Message)); } } if (dtl.preqty != dtl.qty) { i(wmsno, WMSConst.BLL_TYPE_RETRIEVE, "拣货商品明细确认", "应拣数量:" + dtl.preqty + ",实拣数量:" + dtl.qty, mst.qu, mst.savdptid); } #endregion #region 如果是206配送拣货的单据,在同一个拣货单里面同一商品确认完后,写入分货表 if (mst.lnkbllid.Trim() == "206") { var qryallbygdsidN = from e in WmsDc.wms_cangdtl where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.gdsid == gdsid //&& e.gdstype == gdstype && e.wmsno == wmsno && e.bokflg == GetN() && e.tpcode == "y" select e; iCnt = qryallbygdsidN.Count(); if (iCnt == 0) { var qryAllByGdsidCang = from e in WmsDc.wms_cangdtl join e1 in WmsDc.wms_cang on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid } where e.bllid == WMSConst.BLL_TYPE_RETRIEVE && e.tpcode == "y" && e.gdsid == gdsid && e.wmsno == wmsno group e by new { e1.savdptid, e1.rcvdptid, e1.wmsno, e1.bllid, e1.lnkbocino, e1.lnkbocidat, e1.times, e.gdsid } into g select new { savdptid = g.Key.savdptid, wmsno = g.Key.wmsno, bllid = g.Key.bllid, bocino = g.Key.lnkbocino, bocidat = g.Key.lnkbocidat, clsid = g.Key.times, /*checi = (from e2 in WmsDc.psSndGds_dpt_dtl * where e2.dptid == g.Key.rcvdptid && e2.dh == g.Key.lnkbocino * select e2.busid.Substring(e2.busid.Trim().Length - 1, 1)).FirstOrDefault(),*/ gdsid = g.Key.gdsid, qty = g.Sum(e => e.qty), preqty = g.Sum(e => e.qty), ckr = "", chkflg = GetN(), chkdat = "" }; var cutgds = qryAllByGdsidCang.FirstOrDefault(); #region 如果拣货的数量不够的话,要去修改配送单的数量和金额 var qrystkdtl = from e in WmsDc.stkotdtl where e.stkot.wmsbllid == cutgds.bllid && e.stkot.wmsno == cutgds.wmsno && e.gdsid == cutgds.gdsid orderby Convert.ToInt32(e.stkot.rcvdptid) descending, e.qty descending select e; double q = qrystkdtl.Sum(e => e.qty) - cutgds.qty; if (q > 0) { double diff = q; var stkotdtl = qrystkdtl; //扣减stkotdtl里面的库存 RedcStkotQty(stkotdtl.ToArray(), diff); } try { WmsDc.SubmitChanges(); } catch (Exception ex) { if (ex.Message.IndexOf("牺牲品") > 0) { return(RInfo("E0075")); } else { return(RInfo("E0076", ex.Message)); } } #endregion // 写入分货表 #region 写入分货表 //var qryAllByGdsid = from e in WmsDc.stkotdtl // join e1 in WmsDc.wms_cang on new { e.stkot.wmsno, e.stkot.wmsbllid } equals new { e1.wmsno, wmsbllid = e1.bllid } // where e.stkot.wmsbllid == cutgds.bllid // && e.stkot.wmsno == cutgds.wmsno // && e.gdsid == cutgds.gdsid // && e.qty != 0 // group e by new // { // e1.savdptid, // e.stkot.rcvdptid, // e1.wmsno, // e1.bllid, // e1.lnkbocino, // e1.lnkbocidat, // e1.times, // e.gdsid // } into g // select new // { // savdptid = g.Key.savdptid, // wmsno = g.Key.wmsno, // bllid = g.Key.bllid, // bocino = g.Key.lnkbocino, // bocidat = g.Key.lnkbocidat, // clsid = g.Key.times, // checi = (from e2 in WmsDc.psSndGds_dpt_dtl // where e2.dptid == g.Key.rcvdptid && e2.dh == g.Key.lnkbocino // select e2.busid.Substring(e2.busid.Trim().Length - 1, 1)).FirstOrDefault(), // gdsid = g.Key.gdsid, // qty = g.Sum(e => e.qty), // preqty = g.Sum(e => e.qty), // ckr = "", // chkflg = GetN(), // chkdat = "" // }; ////i(wmsno, "", "拣货确认", qryAllByGdsid.ToString(), "", LoginInfo.DefSavdptid); //var arrQryAllByGdsid = qryAllByGdsid.ToArray(); //foreach (var a in arrQryAllByGdsid) //{ // if (a.checi == null) // { // iFile(cutgds.bllid + " " + cutgds.wmsno + " " + cutgds.gdsid + " "); // } //} //var qryAllByGdsidSum = from e in arrQryAllByGdsid // group e by new // { // e.savdptid, // e.wmsno, // e.bllid, // e.bocino, // e.bocidat, // e.clsid, // e.checi, // e.gdsid, // e.ckr, // e.chkflg, // e.chkdat // } into g // select new // { // g.Key.savdptid, // g.Key.wmsno, // g.Key.bllid, // g.Key.bocino, // g.Key.bocidat, // g.Key.clsid, // g.Key.checi, // g.Key.gdsid, // g.Key.ckr, // g.Key.chkflg, // g.Key.chkdat, // qty = g.Sum(e => e.qty), // preqty = g.Sum(e => e.preqty) // }; //List<wms_cutgds> lstCg = new List<wms_cutgds>(); //foreach (var tcg in qryAllByGdsidSum) //{ // wms_cutgds cg = new wms_cutgds(); // cg.bllid = tcg.bllid; // cg.bocidat = tcg.bocidat; // cg.bocino = tcg.bocino; // cg.checi = tcg.checi; // cg.chkdat = tcg.chkdat; // cg.chkflg = tcg.chkflg; // cg.ckr = tcg.ckr; // cg.clsid = tcg.clsid; // cg.gdsid = tcg.gdsid; // cg.preqty = tcg.preqty; // cg.qty = tcg.qty; // cg.savdptid = tcg.savdptid; // cg.wmsno = tcg.wmsno; // lstCg.Add(cg); //} //WmsDc.wms_cutgds.InsertAllOnSubmit(lstCg); #endregion 写入分货表 } } #endregion try { try { WmsDc.SubmitChanges(); } catch (Exception ex) { if (ex.Message.IndexOf("牺牲品") > 0) { return(RInfo("E0075")); } else { return(RInfo("E0076", ex.Message)); } } scop.Complete(); return(RSucc("成功", null, "S0212")); } catch (Exception ex) { return(RErr(ex.Message, "E0059")); } } }