public ActionResult GetDtlByBarcodeGdsid(String barcode, string gdsid) { String sql = "select * from wms_cangdtl_105 t1 " + " join (select * from wms_cang_105 where mkedat='{0}' and times=2) t2 on t1.wmsno=t2.wmsno and t1.bllid=t2.bllid" + " where t1.barcode={1} and t1.gdsid={2}"; wms_cangdtl_105[] dl = WmsDc.ExecuteQuery <wms_cangdtl_105>(sql, GetCurrentDay(), barcode, gdsid).ToArray(); if (dl == null || dl.Length == 0) { return(RNoData("N0101")); } return(RSucc("成功", dl, "S0089")); }
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")); }
/// <summary> /// 得到需要补货的数据 /// </summary> /// <param name="mkedat"></param> /// <param name="qu"></param> /// <param name="savdptid"></param> /// <returns></returns> public ActionResult GetBh(string mkedat, string qu, string savdptid) { #region 得到需要补货的数据的sql语句 string sql = @"declare @ls_savdptid varchar(6),@ls_peisong varchar(8) select @ls_savdptid='" + savdptid + @"' select @ls_peisong='" + LoginInfo.DefStoreid + @"' insert into wms_savegds select @ls_savdptid,dptid,clsid,gdsid,isnull((select max(cnvrto) from pkg where pkg.gdsid=gds.gdsid ),0)*5,'system',convert(char(8),getdate(),112)+replace(convert(char(8),getdate(),108),':',''),'y','y' from gds where isstpsal='n' and gdsid not in (select gdsid from wms_savegds); update wms_savegds set updat=convert(char(8),getdate(),112)+replace(convert(char(8),getdate(),108),':',''), qty=ceiling((isnull(qty103,0)+isnull(qty115,0)) / (select count(distinct mkedat) from wms_cang where bllid='103' and mkedat>=convert(char(8),dateadd(dd,(select 0 - convert(integer,(select val1 from wms_set where setid='011' and isvld='y' and val3='S161'))),getdate()),112) and mkedat<convert(char(8),dateadd(dd,1,getdate()),112)) * convert(integer,(select val1 from wms_set where setid='012' and isvld='y' and val3='S161')) / (select max(cnvrto) from pkg where pkg.gdsid=t1.gdsid )) * t4.cvnrto from wms_savegds t1 left join (select gdsid,sum(qty) qty103 from wms_cangdtl where bllid='103' and wmsno in (select wmsno from wms_cang where bllid='103' and mkedat>=convert(char(8),dateadd(dd,(select 0 - convert(integer,(select val1 from wms_set where setid='011' and isvld='y' and val3='S161'))),getdate()),112) and mkedat<convert(char(8),dateadd(dd,1,getdate()),112)) group by gdsid) t2 on t1.gdsid=t2.gdsid left join (select gdsid,sum(qty) qty115 from wms_cangdtl_115 where bllid='115' and wmsno in (select wmsno from wms_cang_115 where bllid='115' and mkedat>=convert(char(8),dateadd(dd,(select 0 - convert(integer,(select val1 from wms_set where setid='011' and isvld='y' and val3='S161'))),getdate()),112) and mkedat<convert(char(8),dateadd(dd,1,getdate()),112)) group by gdsid) t3 on t1.gdsid=t3.gdsid join (select gdsid,max(cnvrto) cvnrto from pkg group by gdsid) t4 on t1.gdsid=t4.gdsid where t1.savdptid=@ls_savdptid and t1.calflg='y' and t1.isvld='y' and isnull(qty103,0)+isnull(qty115,0)>0; "; sql += @"declare @mkedat varchar(8),@savdptid varchar(6),@qu varchar(6) select @mkedat='" + mkedat + @"' select @qu='" + qu + @"' select @savdptid='" + savdptid + @"' select * from ( select t1.savdptid,(select gdsdes from gds where gdsid=t1.gdsid) gdsdes, (select spc from gds where gdsid=t1.gdsid) spc, (select bsepkg from gds where gdsid=t1.gdsid) bsepkg, t1.gdsid, isnull(t2.qty_103,0) + isnull(t3.qty_115,0) - t1.qty + isnull(t8.qty_108_add,0) bhqty, floor(round((isnull(t2.qty_103,0) + isnull(t3.qty_115,0) - t1.qty + isnull(t8.qty_108_add,0))/(select max(cnvrto) from pkg where iscseorspt='3' and gdsid=t1.gdsid),0)) bhjg from --以安全库存为蓝本 (select * from wms_savegds where dptid in (select val1 from wms_set where setid='999' and val3=@savdptid) and calflg='y' and isvld='y') t1 --计算正常拣货的拣货量 left join (select wms_cang.savdptid,(select dptid from gds where gdsid=wms_cangdtl.gdsid) dptid,gdsid,sum(qty) qty_103 from wms_cang,wms_cangdtl inner join (select * from wms_cangwei where savdptid=@savdptid and qu=@qu and tjflg='n') p1 on wms_cangdtl.barcode=p1.barcode where wms_cang.wmsno=wms_cangdtl.wmsno and wms_cang.bllid=wms_cangdtl.bllid and wms_cang.savdptid=@savdptid and wms_cang.qu=@qu and wms_cang.bllid='103' and mkedat=@mkedat group by wms_cang.savdptid,gdsid) t2 on t1.savdptid=t2.savdptid and t1.dptid=t2.dptid and t1.gdsid=t2.gdsid --计算摘果拣货的拣货量 left join (select wms_cang_115.savdptid,(select dptid from gds where gdsid=wms_cangdtl_115.gdsid) dptid,gdsid,sum(qty) qty_115 from wms_cang_115,wms_cangdtl_115 inner join (select * from wms_cangwei where savdptid=@savdptid and qu=@qu and tjflg='n') p1 on wms_cangdtl_115.barcode=p1.barcode where wms_cang_115.wmsno=wms_cangdtl_115.wmsno and wms_cang_115.bllid=wms_cangdtl_115.bllid and wms_cang_115.savdptid=@savdptid and wms_cang_115.qu=@qu and wms_cang_115.bllid='115' and mkedat=@mkedat group by wms_cang_115.savdptid,gdsid) t3 on t1.savdptid=t3.savdptid and t1.dptid=t3.dptid and t1.gdsid=t3.gdsid --计算非推荐仓位库存 left join (select wms_cwgdsbs.savdptid,(select dptid from gds where gdsid=wms_cwgdsbs.gdsid) dptid,wms_cwgdsbs.gdsid,sum(qty) - isnull((select sum(qty) sndqty from wms_sendbill inner join (select * from wms_cangwei where savdptid=@savdptid and qu=@qu and tjflg='n') p1 on wms_sendbill.barcode=p1.barcode where wms_sendbill.savdptid=@savdptid and wms_sendbill.qu=@qu and wms_cwgdsbs.savdptid=wms_sendbill.savdptid and wms_cwgdsbs.gdsid=wms_sendbill.gdsid group by wms_sendbill.savdptid,gdsid),0) cwqty from wms_cwgdsbs inner join (select * from wms_cangwei where savdptid=@savdptid and qu=@qu and tjflg='n') p1 on wms_cwgdsbs.barcode=p1.barcode where wms_cwgdsbs.savdptid=@savdptid and wms_cwgdsbs.qu=@qu group by wms_cwgdsbs.savdptid,wms_cwgdsbs.gdsid) t4 on t1.savdptid=t4.savdptid and t1.dptid=t4.dptid and t1.gdsid=t4.gdsid --发生了正常拣货高仓位拣货的 left join (select wms_cang.savdptid,(select dptid from gds where gdsid=wms_cangdtl.gdsid) dptid,gdsid,sum(qty) qty_103_high from wms_cang,wms_cangdtl inner join (select * from wms_cangwei where savdptid=@savdptid and qu=@qu and tjflg='y') p1 on wms_cangdtl.barcode=p1.barcode where wms_cang.wmsno=wms_cangdtl.wmsno and wms_cang.bllid=wms_cangdtl.bllid and wms_cang.savdptid=@savdptid and wms_cang.qu=@qu and wms_cang.bllid='103' and mkedat=@mkedat group by wms_cang.savdptid,gdsid) t6 on t1.savdptid=t6.savdptid and t1.dptid=t6.dptid and t1.gdsid=t6.gdsid --发生了摘果拣货高仓位拣货的 left join (select wms_cang_115.savdptid,(select dptid from gds where gdsid=wms_cangdtl_115.gdsid) dptid,gdsid,sum(qty) qty_115_high from wms_cang_115,wms_cangdtl_115 inner join (select * from wms_cangwei where savdptid=@savdptid and qu=@qu and tjflg='y') p1 on wms_cangdtl_115.barcode=p1.barcode where wms_cang_115.wmsno=wms_cangdtl_115.wmsno and wms_cang_115.bllid=wms_cangdtl_115.bllid and wms_cang_115.savdptid=@savdptid and wms_cang_115.qu=@qu and wms_cang_115.bllid='115' and mkedat=@mkedat group by wms_cang_115.savdptid,gdsid) t7 on t1.savdptid=t7.savdptid and t1.dptid=t7.dptid and t1.gdsid=t7.gdsid --当天做的仓位调整单新增的库存 left join (select wms_bllmst.savdptid,(select dptid from gds where gdsid=wms_blltp.gdsid) dptid,gdsid,sum(qty) qty_108_add from wms_bllmst,wms_blltp where wms_bllmst.wmsno=wms_blltp.wmsno and wms_bllmst.bllid=wms_blltp.bllid and wms_bllmst.savdptid=@savdptid and wms_bllmst.bllid='108' and wms_bllmst.mkedat>=@mkedat and wms_bllmst.chkflg='n' group by wms_bllmst.savdptid,gdsid) t8 on t1.savdptid=t8.savdptid and t1.dptid=t8.dptid and t1.gdsid=t8.gdsid where --条件1,拣货量超过安全库存30% (((isnull(t2.qty_103,0) + isnull(t3.qty_115,0)) / (case t1.qty when 0 then 1 else t1.qty end) > 0.3) --条件2,低位库存为0并且高位库存有货 or (t4.cwqty=0)-- and t5.allqty>0) --条件3,发生了正常拣货模式高仓位拣货的 or t6.qty_103_high>0 --条件4,发生了摘果拣货模式高仓位拣货的 or t7.qty_115_high>0) ) table1 left join (select c.gdsid gdsid_1,min(c.barcode) barcode,sum(allqty) highqty from (select a.gdsid,a.barcode,sum(a.qty - isnull(b.qty,0)) allqty from wms_cwgdsbs a left join (select * from wms_sendbill) b on a.barcode=b.barcode and a.gdsid=b.gdsid and a.gdstype=b.gdstype inner join (select * from wms_cangwei where savdptid=@savdptid and qu=@qu and tjflg='y') p1 on a.savdptid=p1.savdptid and a.qu=p1.qu and a.barcode=p1.barcode where a.qty>0 and a.savdptid=@savdptid and a.qu=@qu group by a.gdsid,a.barcode having sum(a.qty - isnull(b.qty,0))>0) c group by c.gdsid) table2 on table1.gdsid=table2.gdsid_1 order by table2.gdsid_1"; #endregion 得到需要补货的数据 IEnumerable <GetBhRet> retobj = WmsDc.ExecuteQuery <GetBhRet>(sql); GetBhRet[] arrRetObj = retobj.ToArray(); if (arrRetObj.Length == 0) { return(RNoData("I0467")); } return(RSucc("成功", arrRetObj, "S0229")); }
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 BokRetrieveGds(String wmsno, String barcode, String gdsid, String gdstype, double qty) { using (TransactionScope scop = new TransactionScope()) { //检索主表、明细表 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.chkflg == GetY()) { return(RInfo("I0430")); } #endregion #region 商品登帐 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; WmsDc.SubmitChanges(); 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 e.qty descending select e; double q = qrystkdtl.Sum(e => e.qty) - cutgds.qty; if (q > 0) { double diff = q; var stkotdtl = qrystkdtl; //减小数部分 #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 减去从大到小的数量 } WmsDc.SubmitChanges(); #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 { WmsDc.SubmitChanges(); scop.Complete(); return(RSucc("成功", null, "S0212")); } catch (Exception ex) { return(RErr(ex.Message, "E0059")); } } }
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 AdRetBll(String bllno, String dptid, String hndno, String gdsids, String qtys, String rsns) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { ////正在生成拣货单,请稍候重试 //string quRetrv = GetQuByDptid(dptid, LoginInfo.DefStoreid); //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo("I0297"); //} //检查是否有残损库权限 if (String.IsNullOrEmpty(LoginInfo.DefCsSavdptid)) { return(RInfo("I0298")); } var qrymst = WmsDc.ExecuteQuery <wms_cang_109>("select * from wms_cang_109 with(updlock) where bllid={0} and wmsno={1} and mkr={2}", WMSConst.BLL_TYPE_RETCANG, bllno, LoginInfo.Usrid); /*var qrymst = from e in WmsDc.wms_cang_109 * where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG * && e.mkr == LoginInfo.Usrid * && qus.Contains(e.qu.Trim()) * select e;*/ var arrqrymst = qrymst.Where(e => qus.Contains(e.qu.Trim())).ToArray(); var qrydtl = from e in WmsDc.wms_cangdtl_109 where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG select e; var arrqrydtl = qrydtl.ToArray(); if (arrqrymst.Length <= 0) { return(RNoData("N0152")); } wms_cang_109 mst = arrqrymst[0]; if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0299")); } //是否是本人制单 if (!IsSameLogin(mst.mkr)) { return(RInfo("I0300")); } //拆分货号,数量 JsonResult jr = (JsonResult)_MkParam(gdsids, qtys, rsns); ResultMessage rm = (ResultMessage)jr.Data; if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS) { return(jr); } List <ParamRetBll> param = null; param = (List <ParamRetBll>)rm.ResultObject; //检查录入的商品有没有相同记录 var qrySameGds = from e in param group e by e.Gdsid into g where g.Count() > 1 select g.Key; var arrQrySameGds = qrySameGds.ToArray(); if (arrQrySameGds.Length > 0) { return(RInfo("I0301", arrQrySameGds[0])); } //得到分区 //GetRealteQuResult rq = GetRealteQu("all", LoginInfo.DefCsSavdptid); var gdsqus = (from e in WmsDc.gds join e1 in WmsDc.wms_set on new { setid = "001", e.dptid } equals new { e1.setid, dptid = e1.val2.Trim() } join e2 in WmsDc.wms_set on new { setid = "008", storeid = "2", savdptid = e1.val3 } //残损库对应的区 equals new { e2.setid, storeid = e2.val2.Trim(), savdptid = e2.val1.Trim() } where param.Select(ee => ee.Gdsid.Trim()).Contains(e.gdsid) && e2.val3 == LoginInfo.DefStoreid && e1.isvld == GetY() && e2.isvld == GetY() && thqus.Contains(e1.val1.Trim()) select new { qu = e1.val1.Trim() } ).Distinct().ToArray(); if (gdsqus.Length == 0 || gdsqus.Length > 1) { return(RInfo("I0302")); } if (gdsqus[0].qu != mst.qu.Trim()) { return(RInfo("I0303", gdsqus[0].qu, mst.qu.Trim())); } //开始制单 //生成明细单 int i = 0; var qrymx = from e in arrqrydtl where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG orderby e.rcdidx descending select e; var arrqrymx = qrymx.ToArray(); if (arrqrymx.Length > 0) { i = arrqrymx[0].rcdidx; } List <wms_cangdtl_109> lstDtl = new List <wms_cangdtl_109>(); foreach (ParamRetBll r in param) { wms_cangdtl_109 dtl = new wms_cangdtl_109(); dtl.wmsno = bllno; dtl.bllid = WMSConst.BLL_TYPE_RETCANG; dtl.rcdidx = i + 1; dtl.oldbarcode = ""; wms_cangwei cw = GetBarcodeByGdsid(LoginInfo.DefCsSavdptid, r.Gdsid); if (cw == null) { return(RInfo(r.Gdsid + ",推荐仓位为空", "I0304")); } dtl.barcode = cw.barcode; dtl.gdsid = r.Gdsid; dtl.pkgid = "01"; dtl.pkgqty = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero); dtl.qty = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero); dtl.gdstype = "95"; dtl.bthno = "1"; dtl.vlddat = GetCurrentDay(); dtl.bcd = r.Bcd; dtl.tpcode = ""; dtl.bkr = ""; dtl.bokflg = GetN(); dtl.bokdat = GetCurrentDate(); dtl.preqty = null; dtl.brfdtl = r.Rsn.ToString(); //看看数据库有没有已加的商品 if (arrqrydtl.Length > 0) { var qryhasgds = from e in arrqrydtl where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG && e.gdsid == dtl.gdsid select e; foreach (var q in qryhasgds) { return(RInfo("I0305", q.gdsid)); } } lstDtl.Add(dtl); //修改推荐仓位标志 i++; } WmsDc.wms_cangdtl_109.InsertAllOnSubmit(lstDtl); try { WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst); //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0207")); } //修改主单时间戳 string sql = @"update wms_cang_109 set bllid='109' where wmsno='" + mst.wmsno + "' and bllid='109' and udtdtm={0}"; int iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm); if (iEff == 0) { return(RInfo("I0207")); } WmsDc.SubmitChanges(); scop.Complete(); return(RSucc("成功", null, "S0142")); } catch (Exception ex) { return(RErr(ex.Message, "E0041")); } } }
public ActionResult MdRetPrvBll(String wmsno, String barcodes, String gdsids, String gdstypes, String bthnos, String vlddats, String qtys) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { //拆分参数 //检查并创建明细 JsonResult jr = (JsonResult)_MakeParam(wmsno, barcodes, gdsids, gdstypes, bthnos, vlddats, qtys); ResultMessage rm = (ResultMessage)jr.Data; if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS) { return(jr); } //检查单号是否存在 /*var qrymst = from e in WmsDc.wms_cang_110 * where e.wmsno == wmsno * && e.bllid == WMSConst.BLL_TYPE_RETPRV * select e;*/ var qrymst = WmsDc.ExecuteQuery <wms_cang_110>("select * from wms_cang_110 with(updlock) where wmsno={0} and bllid={1}", wmsno, WMSConst.BLL_TYPE_RETPRV); var arrqrymst = qrymst.ToArray(); var qrydtl = from e in WmsDc.wms_cangdtl_110 where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_RETPRV select e; var arrqrydtl = qrydtl.ToArray(); //单据是否找到 if (arrqrymst.Length <= 0) { return(RNoData("N0164")); } //检查是否有数据权限 wms_cang_110 mst = arrqrymst[0]; ////正在生成拣货单,请稍候重试 string quRetrv = mst.qu; if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) { return(RInfo("I0360")); } if (!qus.Contains(mst.qu.Trim())) { return(RInfo("I0361")); } //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0362")); } //是否是同一个人制单 if (!IsSameLogin(mst.mkr)) { return(RInfo("I0363", mst.mkr, LoginInfo.Usrid)); } wms_cangdtl_110[] newdtl = (wms_cangdtl_110[])rm.ResultObject; if (mst.times.Trim() == "-") { int i = 0; //如果是报损,判断是否有库存 foreach (wms_cangdtl_110 d in newdtl) { //得到一个商品的库存数量 GdsInBarcode[] gb = GetAGdsQtyInBarcode(arrqrydtl[i].barcode, arrqrydtl[i].gdsid, arrqrydtl[i].gdstype) .Where(e => e.bthno.Trim() == arrqrydtl[i].bthno.Trim() && e.vlddat.Trim() == arrqrydtl[i].vlddat.Trim()) .ToArray(); double bqty = (gb == null || gb.Length <= 0) ? 0 : gb[0].sqty; double ktqty = bqty + arrqrydtl[i].qty; //可调数量 = 库存数量+本单该商品的数量 //如果 需调整数量 > 可调数量 if (d.qty > ktqty) { return(RInfo("I0364", d.qty, ktqty)); } i++; } } //删除单据明细 WmsDc.wms_cangdtl_110.DeleteAllOnSubmit(arrqrydtl); iDelCangDtl110(arrqrydtl, mst); //增加单据明细 WmsDc.wms_cangdtl_110.InsertAllOnSubmit(newdtl); try { //WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst); //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0207")); } //修改主单时间戳 string sql = @"update wms_cang_110 set bllid='110' where wmsno='" + mst.wmsno + "' and bllid='110' and udtdtm={0}"; int iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm); if (iEff == 0) { return(RInfo("I0207")); } WmsDc.SubmitChanges(); scop.Complete(); return(RSucc("成功", newdtl, "S0155")); } catch (Exception ex) { return(RErr(ex.Message, "E0048")); } } }
public ActionResult DlRetBllDetail(String wmsno, String gdsids) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { String[] gdsid = gdsids.Split(','); var qrymst = WmsDc.ExecuteQuery <wms_cang_109>("select * from wms_cang_109 with(updlock) where bllid={0} and wmsno={1} and mkr={2}", WMSConst.BLL_TYPE_RETCANG, wmsno, LoginInfo.Usrid); /*var qrymst = from e in WmsDc.wms_cang_109 * where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG * && e.mkr == LoginInfo.Usrid * && qus.Contains(e.qu.Trim()) * select e;*/ var arrqrymst = qrymst.Where(e => qus.Contains(e.qu.Trim())).ToArray(); var qrydtl = from e in WmsDc.wms_cangdtl_109 where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_RETCANG select e; var dlarrdtl = qrydtl.Where(w => gdsid.Contains(w.gdsid.Trim())).ToArray(); /*var qrymst = from e in WmsDc.wms_cang_109 * where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_RETCANG * && e.mkr == LoginInfo.Usrid * && qus.Contains(e.qu.Trim()) * select e; * var arrqrymst = qrymst.ToArray();*/ if (arrqrymst.Length <= 0) { return(RNoData("N0150")); } wms_cang_109 mst = arrqrymst[0]; ////正在生成拣货单,请稍候重试 //string quRetrv = mst.qu; //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) //{ // return RInfo("I0292"); //} if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0293")); } //是否是本人制单 if (!IsSameLogin(mst.mkr)) { return(RInfo("I0294")); } if (dlarrdtl.Length <= 0) { return(RNoData("N0151")); } try { //下面注释这行影响效率,所以用加外键的方式处理此次的并发问题 /*int iDtlCount = WmsDc.ExecuteQuery<int>("select count(*) from wms_cangdtl_109 with(xlock) where bllid={0} and wmsno={1}", * WMSConst.BLL_TYPE_RETCANG, wmsno).First();*/ WmsDc.wms_cangdtl_109.DeleteAllOnSubmit(dlarrdtl); iDelCangDtl109(dlarrdtl, mst); //查询明细删除后,是否已经没有明细,没有明细就删除主单据 //var arrqrydtl = qrydtl.ToArray(); //int iDtlCount = arrqrydtl.Length; int iDtlCount = qrydtl.Count(); if (iDtlCount <= 0) { WmsDc.wms_cang_109.DeleteOnSubmit(mst); iDelCangMst109(mst); } //WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst); //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0207")); } if (iDtlCount > 1) { //修改主单时间戳 string sql = @"update wms_cang_109 set bllid='109' where wmsno='" + mst.wmsno + "' and bllid='109' and udtdtm={0}"; int iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm); if (iEff == 0) { return(RInfo("I0207")); } } WmsDc.SubmitChanges(); scop.Complete(); return(RSucc("删除成功", null, "S0139")); } catch (Exception ex) { return(RErr(ex.Message, "E0039")); } } }
public ActionResult AdRetPrv(String wmsno, String barcode, String gdsid, String gdstype, String bthno, String vlddat, double qty) { //判断分区是否有效 if (!IsExistBarcode(barcode)) { return(RInfo("I0351", barcode.Trim())); } //检查单号是否存在 /*var qrymst = from e in WmsDc.wms_cang_110 * where e.wmsno == wmsno * && e.bllid == WMSConst.BLL_TYPE_RETPRV * select e;*/ var qrymst = WmsDc.ExecuteQuery <wms_cang_110>("select * from wms_cang_110 with(updlock) where wmsno={0} and bllid={1}", wmsno, WMSConst.BLL_TYPE_RETPRV); var arrqrymst = qrymst.ToArray(); var qrydtl = from e in WmsDc.wms_cangdtl_110 where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_RETPRV orderby e.rcdidx descending select e; var arrqrydtl = qrydtl.ToArray(); //单据是否找到 if (arrqrymst.Length <= 0) { return(RNoData("N0163")); } //检查是否有数据权限 wms_cang_110 mst = arrqrymst[0]; ////正在生成拣货单,请稍候重试 string quRetrv = mst.qu; if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) { return(RInfo("I0352")); } if (!qus.Contains(mst.qu.Trim())) { return(RInfo("I0353")); } //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0354")); } //判断gdsid和barcode是不是在一个区 String[] qu = GetQuByGdsid(gdsid, LoginInfo.DefStoreid); if (!qu.Contains(barcode.Substring(0, 2))) { return(RInfo("I0355", gdsid, String.Join(",", qu))); } //如果是报损,判断是否有库存 if (!HasQtyInBarcode(barcode, gdsid, gdstype)) { return(RInfo("I0356", gdsid, barcode)); } //得到一个商品的库存数量 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 (qty > ktqty) { return(RInfo("I0357", qty, ktqty)); } //判断商品是否已经再单据里面 int iHasIn = arrqrydtl.Where(e => e.gdsid.Trim() == gdsid.Trim() && e.gdstype.Trim() == gdstype.Trim() && e.barcode.Trim() == barcode.Trim() && e.bthno.Trim() == bthno.Trim() && e.vlddat.Trim() == vlddat.Trim()).Count(); if (iHasIn > 0) { return(RInfo("I0358", gdsid)); } wms_cangdtl_110 dtl = new wms_cangdtl_110(); dtl.wmsno = wmsno; dtl.bllid = WMSConst.BLL_TYPE_RETPRV; dtl.rcdidx = arrqrydtl[0].rcdidx + 1; dtl.barcode = barcode; dtl.gdsid = gdsid; dtl.gdstype = gdstype; dtl.pkgid = "01"; double fQty = qty; 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; dtl.bthno = string.IsNullOrEmpty(bthno.Trim()) ? "1" : bthno.Trim(); dtl.vlddat = string.IsNullOrEmpty(vlddat.Trim()) ? GetCurrentDay() : vlddat.Trim(); JsonResult jr = (JsonResult)GetBcdByGdsid(gdsid); ResultMessage rm = (ResultMessage)jr.Data; /*if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS) * { * return RInfo( "I0359",gdsid ); * }*/ bcd b = rm.ResultObject == null ? null : ((bcd[])rm.ResultObject).FirstOrDefault(); dtl.bcd = b == null ? null : b.bcd1; dtl.bkr = ""; dtl.bokflg = GetN(); dtl.bokdat = GetCurrentDate(); WmsDc.wms_cangdtl_110.InsertOnSubmit(dtl); try { //WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst); //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0207")); } WmsDc.SubmitChanges(); return(RSucc("成功", dtl, "S0154")); } catch (Exception ex) { return(RErr(ex.Message, "E0047")); } }
public ActionResult AdRetPrvs(String wmsno, String barcodes, String gdsids, String gdstypes, String bthnos, String vlddats, String qtys) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { //判断barcodes、gdsids、gdstypes、qtys是否数量一致 String[] barcode = barcodes.Split(','); String[] gdsid = gdsids.Split(','); String[] qty = qtys.Split(','); String[] gdstype = gdstypes.Split(','); String[] bthno = bthnos.Split(','); String[] vlddat = vlddats.Split(','); List <object> retObjs = new List <object>(); if ( (barcode.Length != gdsid.Length) || (barcode.Length != qty.Length) || (gdsid.Length != qty.Length) || (gdstype.Length != gdsid.Length) ) { return(RInfo("I0349")); } for (int i = 0; i < gdsid.Length; i++) { double d = 0; if (!double.TryParse(qty[i], out d)) { return(RInfo("I0350", gdsid[i], qty[i])); } JsonResult jr = (JsonResult)AdRetPrv(wmsno, barcode[i], gdsid[i], gdstype[i], bthno[i], vlddat[i], d); ResultMessage rm = (ResultMessage)jr.Data; if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS) { return(jr); } retObjs.Add(rm.ResultObject); } //修改主单时间戳 //检查单号是否存在 /*var qrymst = from e in WmsDc.wms_cang_110 * where e.wmsno == wmsno * && e.bllid == WMSConst.BLL_TYPE_RETPRV * select e;*/ var qrymst = WmsDc.ExecuteQuery <wms_cang_110>("select * from wms_cang_110 with(updlock) where wmsno={0} and bllid={1}", wmsno, WMSConst.BLL_TYPE_RETPRV); wms_cang_110 mst = qrymst.FirstOrDefault(); if (mst == null) { return(RNoData("N0258")); } /*string sql = @"update wms_cang_110 set bllid='110' where wmsno='" + mst.wmsno + "' and bllid='110' and udtdtm={0}"; * int iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm); * if (iEff == 0) * { * return RInfo("I0207"); * }*/ WmsDc.SubmitChanges(); scop.Complete(); return(RSucc("成功", retObjs, "S0153")); } }
/// <summary> /// 修改返厂单 /// </summary> /// <param name="wmsno"></param> /// <param name="gdsid"></param> /// <param name="rcdidx"></param> /// <param name="qty"></param> /// <returns></returns> public ActionResult MdARetPrv(String wmsno, String gdsid, int rcdidx, double qty) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { //检查单号是否存在 /*var qrymst = from e in WmsDc.wms_cang_110 * where e.wmsno == wmsno * && e.bllid == WMSConst.BLL_TYPE_RETPRV * select e;*/ var qrymst = WmsDc.ExecuteQuery <wms_cang_110>("select * from wms_cang_110 with(updlock) where wmsno={0} and bllid={1}", wmsno, WMSConst.BLL_TYPE_RETPRV); var arrqrymst = qrymst.ToArray(); var qrydtl = from e in WmsDc.wms_cangdtl_110 where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_RETPRV && e.gdsid == gdsid && e.rcdidx == rcdidx orderby e.rcdidx descending select e; var arrqrydtl = qrydtl.ToArray(); //单据是否找到 if (arrqrymst.Length <= 0) { return(RNoData("N0161")); } //检查是否有数据权限 wms_cang_110 mst = arrqrymst[0]; ////正在生成拣货单,请稍候重试 string quRetrv = mst.qu; if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) { return(RInfo("I0344")); } if (!qus.Contains(mst.qu.Trim())) { return(RInfo("I0345")); } //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0346")); } //是否是同一个人制单 if (!IsSameLogin(mst.mkr)) { return(RInfo("I0347", mst.mkr, LoginInfo.Usrid)); } //未找到该商品 if (arrqrydtl.Length <= 0) { return(RNoData("N0162")); } //修改数量 wms_cangdtl_110 dtl = arrqrydtl[0]; //得到一个商品的库存数量 GdsInBarcode[] gb = GetAGdsQtyInBarcode(dtl.barcode, gdsid, dtl.gdstype) .Where(e => e.vlddat.Trim() == dtl.vlddat.Trim() && e.bthno.Trim() == dtl.bthno.Trim()) .ToArray(); double bqty = (gb == null || gb.Length <= 0) ? 0 : gb[0].sqty; double ktqty = bqty + dtl.qty; //可调数量 = 库存数量+本单该商品的数量 //如果 需调整数量 > 可调数量 if (qty > ktqty) { return(RInfo("I0348", qty, ktqty)); } //修改数量 dtl.qty = Math.Round(qty, 4, MidpointRounding.AwayFromZero); dtl.pkgqty = Math.Round(qty, 4, MidpointRounding.AwayFromZero); dtl.preqty = Math.Round(qty, 4, MidpointRounding.AwayFromZero); try { //WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst); //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0207")); } //修改主单时间戳 /*string sql = @"update wms_cang_110 set bllid='110' where wmsno='" + mst.wmsno + "' and bllid='110' and udtdtm={0}"; * int iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm); * if (iEff == 0) * { * return RInfo("I0207"); * }*/ WmsDc.SubmitChanges(); scop.Complete(); return(RSucc("成功", arrqrydtl[0], "S0152")); } catch (Exception ex) { return(RErr(ex.Message, "E0046")); } } }
public ActionResult DlRetPrvBll(String wmsno) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { //检查单号是否存在 /*var qrymst = from e in WmsDc.wms_cang_110 * where e.wmsno == wmsno * && e.bllid == WMSConst.BLL_TYPE_RETPRV * select e;*/ var qrymst = WmsDc.ExecuteQuery <wms_cang_110>("select * from wms_cang_110 with(updlock) where wmsno={0} and bllid={1}", wmsno, WMSConst.BLL_TYPE_RETPRV); var arrqrymst = qrymst.ToArray(); var qrydtl = from e in WmsDc.wms_cangdtl_110 where e.wmsno == wmsno && e.bllid == WMSConst.BLL_TYPE_RETPRV select e; var arrqrydtl = qrydtl.ToArray(); int iDtlCount = arrqrydtl.Length; //单据是否找到 if (arrqrymst.Length <= 0) { return(RNoData("N0160")); } //检查是否有数据权限 wms_cang_110 mst = arrqrymst[0]; ////正在生成拣货单,请稍候重试 string quRetrv = mst.qu; if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv)) { return(RInfo("I0340")); } if (!qus.Contains(mst.qu.Trim())) { return(RInfo("I0341")); } //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0342")); } //是否是同一个人制单 if (!IsSameLogin(mst.mkr)) { return(RInfo("I0343", mst.mkr, LoginInfo.Usrid)); } //删除单据明细 WmsDc.wms_cangdtl_110.DeleteAllOnSubmit(arrqrydtl); WmsDc.SubmitChanges(); WmsDc.wms_cang_110.DeleteAllOnSubmit(arrqrymst); //iDelCangDtl110(arrqrydtl, mst); //iDelCangMst110(arrqrymst[0]); //删除主单据 try { //WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst); //检查单号是否已经审核 /*if (mst!=null && mst.chkflg == GetY()) * { * return RInfo("I0207"); * }*/ WmsDc.SubmitChanges(); scop.Complete(); return(RSucc("成功", null, "S0151")); } catch (Exception ex) { return(RErr(ex.Message, "E0045")); } } }
public ActionResult DlRetPrvBllDtl(String wmsno, String gdsid, int rcdidx, String isMd) { using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options)) { isMd = String.IsNullOrEmpty(isMd) ? "n" : "y"; //检查单号是否存在 /*var qrymst = from e in WmsDc.wms_cang_110 * where e.wmsno == wmsno * && e.bllid == WMSConst.BLL_TYPE_RETPRV * select e;*/ var qrymst = WmsDc.ExecuteQuery <wms_cang_110>("select * from wms_cang_110 with(updlock) where wmsno={0} and bllid={1}", wmsno, WMSConst.BLL_TYPE_RETPRV); var arrqrymst = qrymst.ToArray(); var qrydtl = from e in WmsDc.wms_cangdtl_110 where e.wmsno == wmsno //&& e.gdsid == gdsid && e.rcdidx == rcdidx && e.bllid == WMSConst.BLL_TYPE_RETPRV select e; var arrqrydtl = qrydtl.ToArray(); var arrqrydtl1 = qrydtl.Where(e => e.gdsid == gdsid && e.rcdidx == rcdidx).ToArray(); //单据是否找到 if (arrqrymst.Length <= 0) { return(RNoData("N0159")); } //检查是否有数据权限 wms_cang_110 mst = arrqrymst[0]; ////正在生成拣货单,请稍候重试 if (DoingRetrieve(LoginInfo.DefStoreid, mst.qu)) { return(RInfo("I0336")); } if (!qus.Contains(mst.qu.Trim())) { return(RInfo("I0337")); } //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0338")); } //是否是同一个人制单 if (!IsSameLogin(mst.mkr)) { return(RInfo("I0339", mst.mkr, LoginInfo.Usrid)); } //删除单据明细 int iDtlCnt = arrqrydtl.Length; WmsDc.wms_cangdtl_110.DeleteAllOnSubmit(arrqrydtl1); WmsDc.SubmitChanges(); iDelCangDtl110(arrqrydtl1, mst); if (iDtlCnt == 1 && isMd == "n") { WmsDc.wms_cang_110.DeleteAllOnSubmit(arrqrymst); iDelCangMst110(arrqrymst[0]); } //删除主单据 try { //WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst); //检查单号是否已经审核 if (mst != null && mst.chkflg == GetY()) { return(RInfo("I0207")); } /*if (iDtlCnt > 1) * { * //修改主单时间戳 * string sql = @"update wms_cang_110 set bllid='110' where wmsno='" + mst.wmsno + "' and bllid='110' and udtdtm={0}"; * int iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm); * if (iEff == 0) * { * return RInfo("I0207"); * } * }*/ WmsDc.SubmitChanges(); scop.Complete(); return(RSucc("成功", null, "S0150")); } catch (Exception ex) { return(RErr(ex.Message, "E0044")); } } }