Exemple #1
0
        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"));
        }
Exemple #2
0
        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"));
        }
Exemple #4
0
        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"));
                }
            }
        }
Exemple #5
0
        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"));
                }
            }
        }
Exemple #6
0
        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"));
                }
            }
        }
Exemple #7
0
        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"));
                }
            }
        }
Exemple #8
0
        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"));
                }
            }
        }
Exemple #9
0
        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"));
                }
            }
        }
Exemple #10
0
        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"));
            }
        }
Exemple #11
0
        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"));
            }
        }
Exemple #12
0
        /// <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"));
                }
            }
        }
Exemple #13
0
        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"));
                }
            }
        }
Exemple #14
0
        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"));
                }
            }
        }