public ActionResult BokRetrieve(String wmsno, String bllid, String bocino, String clsid, String checi, String gdsid, double qty) { //正在生成拣货单,请稍候重试 //string quRetrv = GetQuByGdsid(gdsid, LoginInfo.DefStoreid).FirstOrDefault(); //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0102" ); //} //得到wms_cutgds var qry = from e in WmsDc.wms_cutgds join e1 in WmsDc.gds on e.gdsid equals e1.gdsid where e.bocino == bocino.Trim() && e.clsid == clsid.Trim() && e.checi == checi.Trim() && e.wmsno == wmsno.Trim() && e.bllid == bllid.Trim() && e.gdsid == gdsid.Trim() && e.savdptid == LoginInfo.DefSavdptid && dpts.Contains(e1.dptid) select e; var arrqry = qry.ToArray(); if (arrqry.Length < 0) { return(RNoData("N0066")); } wms_cutgds cutgds = arrqry[0]; //得到对应的stkotdtl里面的未播种,未审核的单据商品信息 /*var qrystkot = from e in WmsDc.stkotdtl * where e.stkot.wmsno == wmsno.Trim() * && e.stkot.wmsbllid == bllid.Trim() * && e.stkot.chkflg == GetN() * && e.stkot.bzflg == GetN() * && dpts.Contains(e.stkot.dptid) * && e.gdsid == gdsid.Trim() * select e; */ var qrystkot = from e in WmsDc.stkot join e1 in WmsDc.stkotdtl on e.stkouno equals e1.stkouno join e2 in WmsDc.gds on e1.gdsid equals e2.gdsid join e3 in WmsDc.wms_cang on new { e.wmsno, e.wmsbllid } equals new { e3.wmsno, wmsbllid = e3.bllid } join e4 in WmsDc.wms_boci on new { dh = e3.lnkbocino, sndtmd = e3.lnkbocidat, e3.qu } equals new { e4.dh, e4.sndtmd, e4.qu } join e5 in WmsDc.view_pssndgds on new { e4.dh, e4.clsid, e4.sndtmd, e.rcvdptid, e4.qu } equals new { e5.dh, e5.clsid, e5.sndtmd, e5.rcvdptid, e5.qu } join e6 in WmsDc.dpt on e.rcvdptid equals e6.dptid where e.wmsno == wmsno && e.savdptid == LoginInfo.DefSavdptid && dpts.Contains(e.dptid.Trim()) && e.bllid == WMSConst.BLL_TYPE_DISPATCH && e5.busid.Trim().Substring(e5.busid.Trim().Length - 1, 1) == checi && e.wmsbllid == bllid.Trim() && e.chkflg == GetN() && e.bzflg == GetN() && e1.gdsid == gdsid.Trim() //&& (e1.bzflg == GetN() || e1.bzflg == null) orderby e1.bzflg, e1.gdsid select e1; var arrqrystkot = qrystkot.ToArray(); if (arrqrystkot.Length <= 0) { return(RNoData("N0067")); } stkotdtl[] stkotdtl = arrqrystkot; //得到wms_cang的信息 var qrycang = from e in WmsDc.wms_cang where e.wmsno == wmsno.Trim() && e.bllid == bllid.Trim() && qus.Contains(e.qu) select e; var arrqrycang = qrycang.ToArray(); if (arrqrycang.Length <= 0) { return(RNoData("N0068")); } wms_cang[] wms_cang = arrqrycang; //得到wms_cang的信息 var qrycangdtl = from e in WmsDc.wms_cangdtl where e.wmsno == wmsno.Trim() && e.bllid == bllid.Trim() && e.gdsid == gdsid.Trim() select e; var arrqrycangdtl = qrycangdtl.ToArray(); if (arrqrycangdtl.Length <= 0) { return(RNoData("N0069")); } wms_cangdtl[] wms_cangdtl = arrqrycangdtl; if (cutgds.chkflg == GetY()) { return(RInfo("I0103")); } // done: 取消对 5、分货确认时,发现数量小于应分货数量,要循环扣除对应的stkotdtl里面的qty 的注释 if (qty < stkotdtl.Sum(e => e.qty)) { Log.i(LoginInfo.Usrid, Mdlid, wmsno, bllid, Mdldes, gdsid.Trim() + ":应拣:" + Math.Round(stkotdtl.Sum(e => e.qty), 4, MidpointRounding.AwayFromZero) + ";实拣:" + Math.Round(qty, 4, MidpointRounding.AwayFromZero), "", LoginInfo.DefSavdptid); double diff = stkotdtl.Sum(e => e.qty) - qty; //减小数部分 #region 减小数部分 foreach (stkotdtl d in stkotdtl) { if (d.preqty == null) { d.preqty = d.qty; } double xtmp = d.qty * 10000 % 10000 / 10000; if (diff > 0 && diff >= xtmp) { diff -= xtmp; d.qty -= xtmp; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } else if (diff > 0 && diff < xtmp) { d.qty -= diff; diff = 0; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } } //WmsDc.SubmitChanges(); #endregion 减小数部分 //减去零散件规 #region 减去零散件规 foreach (stkotdtl d in stkotdtl) { if (d.preqty == null) { d.preqty = d.qty; } double xtmp = (double)WmsDc.ExecuteQuery <decimal>("select convert(decimal,{0}) % convert(decimal,e.cnvrto) from v_wms_pkg e where e.gdsid={1}", d.qty, d.gdsid).FirstOrDefault(); /*double xtmp = (from e in WmsDc.v_wms_pkg * where e.gdsid == d.gdsid * select Convert.ToInt32(d.qty) % e.cnvrto).FirstOrDefault();*/ if (diff > 0 && diff >= xtmp) { diff -= xtmp; d.qty -= xtmp; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } else if (diff > 0 && diff < xtmp) { d.qty -= diff; diff = 0; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } } //WmsDc.SubmitChanges(); #endregion 减去零散件规 //减去从大到小的数量 #region 减去从大到小的数量 foreach (stkotdtl d in stkotdtl) { if (d.preqty == null) { d.preqty = d.qty; } if (diff > 0 && diff >= d.qty) { diff -= d.qty; d.qty = 0; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } else if (diff > 0 && diff < d.qty) { d.qty = d.qty - diff; diff = 0; d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); d.amt = Math.Round(d.qty * d.prc, 4); d.salamt = d.qty * d.salprc; d.patamt = Math.Round(d.qty * d.taxprc, 4); d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); } } WmsDc.SubmitChanges(); #endregion 减去从大到小的数量 /* * foreach (stkotdtl d in stkotdtl) * { * if (d.preqty==null) * { * d.preqty = d.qty; * } * if (diff > 0 && diff>=d.qty) * { * diff -= d.qty; * d.qty = 0; * * d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); * d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); * d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); * d.amt = Math.Round(d.qty * d.prc, 4); * d.salamt = d.qty * d.salprc; * d.patamt = Math.Round(d.qty * d.taxprc, 4); * d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); * } * else if (diff > 0 && diff < d.qty) * { * d.qty = d.qty - diff; * diff = 0; * * d.qty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); * d.pkgqty = Math.Round(d.qty, 4, MidpointRounding.AwayFromZero); * d.taxamt = Math.Round(d.qty * d.prc * d.taxrto, 4); * d.amt = Math.Round(d.qty * d.prc, 4); * d.salamt = d.qty * d.salprc; * d.patamt = Math.Round(d.qty * d.taxprc, 4); * d.stotcstamt = Math.Round(d.qty * d.stotcstprc.Value, 4); * } * }*/ } //修改wms_cutgds中的ckr, chkflg, chkdat,qty cutgds.ckr = LoginInfo.Usrid; cutgds.chkflg = GetY(); cutgds.qty = qty; cutgds.chkdat = GetCurrentDate(); try { WmsDc.SubmitChanges(); } catch (Exception ex) { return(RErr(ex.Message, "E0014")); } return(RSucc("成功", null, "S0059")); }
public ActionResult BokRetrieve(String wmsno, String bllid, String bocino, String clsid, String checi, String gdsid, double qty) { //正在生成拣货单,请稍候重试 //string quRetrv = GetQuByGdsid(gdsid, LoginInfo.DefStoreid).FirstOrDefault(); //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo( "I0102" ); //} //得到wms_cutgds var qry = from e in WmsDc.wms_cutgds join e1 in WmsDc.gds on e.gdsid equals e1.gdsid where e.bocino == bocino.Trim() && e.clsid == clsid.Trim() && e.checi == checi.Trim() && e.wmsno == wmsno.Trim() && e.bllid == bllid.Trim() && e.gdsid == gdsid.Trim() && e.savdptid == LoginInfo.DefSavdptid && dpts.Contains(e1.dptid) select e; var arrqry = qry.ToArray(); if (arrqry.Length < 0) { return(RNoData("N0066")); } wms_cutgds cutgds = arrqry[0]; //得到对应的stkotdtl里面的未播种,未审核的单据商品信息 /*var qrystkot = from e in WmsDc.stkotdtl * where e.stkot.wmsno == wmsno.Trim() * && e.stkot.wmsbllid == bllid.Trim() * && e.stkot.chkflg == GetN() * && e.stkot.bzflg == GetN() * && dpts.Contains(e.stkot.dptid) * && e.gdsid == gdsid.Trim() * select e; */ var qrystkot = from e in WmsDc.stkot join e1 in WmsDc.stkotdtl on e.stkouno equals e1.stkouno join e2 in WmsDc.gds on e1.gdsid equals e2.gdsid join e3 in WmsDc.wms_cang on new { e.wmsno, e.wmsbllid } equals new { e3.wmsno, wmsbllid = e3.bllid } join e4 in WmsDc.wms_boci on new { dh = e3.lnkbocino, sndtmd = e3.lnkbocidat, e3.qu } equals new { e4.dh, e4.sndtmd, e4.qu } join e5 in WmsDc.view_pssndgds on new { e4.dh, e4.clsid, e4.sndtmd, e.rcvdptid, e4.qu } equals new { e5.dh, e5.clsid, e5.sndtmd, e5.rcvdptid, e5.qu } join e6 in WmsDc.dpt on e.rcvdptid equals e6.dptid where e.wmsno == wmsno && e.savdptid == LoginInfo.DefSavdptid && dpts.Contains(e.dptid.Trim()) && e.bllid == WMSConst.BLL_TYPE_DISPATCH && e5.busid.Trim().Substring(e5.busid.Trim().Length - 1, 1) == checi && e.wmsbllid == bllid.Trim() && e.chkflg == GetN() && e.bzflg == GetN() && e1.gdsid == gdsid.Trim() //&& (e1.bzflg == GetN() || e1.bzflg == null) orderby e1.bzflg, e1.gdsid select e1; var arrqrystkot = qrystkot.ToArray(); if (arrqrystkot.Length <= 0) { return(RNoData("N0067")); } stkotdtl[] stkotdtl = arrqrystkot; //得到wms_cang的信息 var qrycang = from e in WmsDc.wms_cang where e.wmsno == wmsno.Trim() && e.bllid == bllid.Trim() && qus.Contains(e.qu) select e; var arrqrycang = qrycang.ToArray(); if (arrqrycang.Length <= 0) { return(RNoData("N0068")); } wms_cang[] wms_cang = arrqrycang; //得到wms_cang的信息 var qrycangdtl = from e in WmsDc.wms_cangdtl where e.wmsno == wmsno.Trim() && e.bllid == bllid.Trim() && e.gdsid == gdsid.Trim() select e; var arrqrycangdtl = qrycangdtl.ToArray(); if (arrqrycangdtl.Length <= 0) { return(RNoData("N0069")); } wms_cangdtl[] wms_cangdtl = arrqrycangdtl; if (cutgds.chkflg == GetY()) { return(RInfo("I0103")); } // done: 取消对 5、分货确认时,发现数量小于应分货数量,要循环扣除对应的stkotdtl里面的qty 的注释 if (qty < stkotdtl.Sum(e => e.qty)) { Log.i(LoginInfo.Usrid, Mdlid, wmsno, bllid, Mdldes, gdsid.Trim() + ":应拣:" + Math.Round(stkotdtl.Sum(e => e.qty), 4, MidpointRounding.AwayFromZero) + ";实拣:" + Math.Round(qty, 4, MidpointRounding.AwayFromZero), "", LoginInfo.DefSavdptid); double diff = stkotdtl.Sum(e => e.qty) - qty; //扣减stkotdtl里面的库存 RedcStkotQty(stkotdtl, diff); } //修改wms_cutgds中的ckr, chkflg, chkdat,qty cutgds.ckr = LoginInfo.Usrid; cutgds.chkflg = GetY(); cutgds.qty = qty; cutgds.chkdat = GetCurrentDate(); try { WmsDc.SubmitChanges(); } catch (Exception ex) { return(RErr(ex.Message, "E0014")); } return(RSucc("成功", null, "S0059")); }