private void CkBzFlg(stkin q)
        {
            //盘点是否有为空的明细
            var qrydtl = q.stkindtl.Where(e => e.qty == 0 && e.bzflg == GetN());

            foreach (stkindtl d in qrydtl)
            {
                d.bzflg = GetY();
                d.bzr   = LoginInfo.Usrid;
                d.bzdat = GetCurrentDate();
            }

            WmsDc.SubmitChanges();

            //修改播种标记
            q.outflg = GetY();
            q.outdat = GetCurrentDay();
            //审核配送单
            q.chkflg = GetY();
            q.chkdat = GetCurrentDay();
            q.ckr    = LoginInfo.Usrid;

            //记账gdsbs
            //记账gdsbs
            List <gdsbs> lstGdsbs = new List <gdsbs>();

            foreach (var t in q.stkindtl)
            {
                gdsbs g = new gdsbs();
                //g.actid = t.actid;
                //g.brief = t.brief;
                g.srcbllno   = t.stkinno;
                g.srcrcdidx  = t.rcdidx;
                g.fscprdid   = GetCurrentFscprdid();
                g.bllid      = t.stkin.bllid;
                g.dptid      = t.stkin.dptid;
                g.depid      = t.depid;
                g.empid      = LoginInfo.Usrid;
                g.gdsid      = t.gdsid;
                g.actdat     = GetCurrentDay();
                g.dbtcrt     = '0';
                g.qty        = t.qty;
                g.prc        = t.prc.Value;
                g.amt        = t.amt.Value;
                g.bthno      = t.bthno;
                g.vlddat     = t.vlddat;
                g.bcd        = t.bcd;
                g.mctortrust = t.mctortrust;
                g.prvid      = t.prvid;
                g.dlvprc     = t.dlvprc;
                g.taxflg     = t.taxflg;
                g.branchid   = GetBranchid(t.stkin.savdptid);
                lstGdsbs.Add(g);
            }
            var qrysftdtl = from e in WmsDc.sftdtl
                            where e.stkinno == q.stkinno
                            select e;
            sftdtl sd = qrysftdtl.ToArray()[0];

            foreach (var t in q.stkindtl)
            {
                gdsbs g = new gdsbs();
                //g.actid = t.actid;
                //g.brief = t.brief;
                g.srcbllno   = t.stkinno;
                g.srcrcdidx  = t.rcdidx;
                g.fscprdid   = GetCurrentFscprdid();
                g.bllid      = t.stkin.bllid;
                g.dptid      = sd.sft_dptout;
                g.depid      = sd.sft_depout;
                g.empid      = LoginInfo.Usrid;
                g.gdsid      = t.gdsid;
                g.actdat     = GetCurrentDay();
                g.dbtcrt     = '1';
                g.qty        = t.qty;
                g.prc        = t.prc.Value;
                g.amt        = t.amt.Value;
                g.bthno      = t.bthno;
                g.vlddat     = t.vlddat;
                g.bcd        = t.bcd;
                g.mctortrust = t.mctortrust;
                g.prvid      = t.prvid;
                g.dlvprc     = t.dlvprc;
                g.taxflg     = t.taxflg;
                g.branchid   = GetBranchid(sd.sft_sdtout);
                lstGdsbs.Add(g);
            }
            WmsDc.gdsbs.InsertAllOnSubmit(lstGdsbs);

            stklst astklst = new stklst();

            astklst.stkouno = q.stkinno;
            WmsDc.stklst.InsertOnSubmit(astklst);
        }
        public ActionResult GenerateRecievBll(String odrno)
        {
            stkin mst = GetMst(odrno);

            if (mst == null)
            {
                return(RNoData("N0030"));
            }
            ////正在生成拣货单,请稍候重试
            string quRetrv = GetQuByDptid(mst.dptid, LoginInfo.DefStoreid);
            //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
            //{
            //    return RInfo( "I0051" );
            //}
            //2.查看内调单据是否已经转过为收货单
            var qryshd = from e in WmsDc.wms_bllmst
                         where e.bllid == WMSConst.BLL_TYPE_REVIECEBLL &&
                         e.lnknewno == odrno && e.lnknewbllid == WMSConst.BLL_TYPE_INNERADJ
                         select e;

            if (qryshd.Count() > 0)
            {
                return(RInfo("I0052"));
            }

            return(MakeNewBllNo(
                       mst.savdptid,
                       quRetrv,
                       WMSConst.BLL_TYPE_REVIECEBLL,
                       ((bllno) =>
            {
                var odr = mst;
                //修改转单标记
                String sNow = DateTime.Now.ToString("yyyyMMdd");
                String cmd = "update stkin set inzdflg='" + GetY() + "',inzddat={0}, inwmsno={1}, inwmsbllid={2} where stkinno={3}";
                WmsDc.ExecuteCommand(cmd, new[] { sNow, bllno, WMSConst.BLL_TYPE_INNERADJ, odrno });

                //===================== 生成一张新的收货单 =====================
                //--------------------- 1.生成主单 -----------------------------
                wms_bllmst bllmst = new wms_bllmst();
                bllmst.wmsno = bllno;
                bllmst.hndbllno = odr.hndbllno;
                bllmst.bllid = WMSConst.BLL_TYPE_REVIECEBLL;
                bllmst.prvid = odr.savdptid;
                bllmst.savdptid = odr.savdptid;
                //得到登录仓库所在部门的区位码
                GetRealteQuResult realte = GetRealteQu(odr.dptid, odr.savdptid);
                bllmst.qu = realte.qu;

                /*bllmst.tongdao = odr.mst.tongdao;
                 * bllmst.huojia = odr.mst.huojia;*/
                bllmst.odrdat = odr.mkedat;
                bllmst.arvdat = odr.mkedat;
                bllmst.mkr = LoginInfo.Usrid;
                bllmst.mkedat = GetCurrentDate();
                bllmst.ckr = "";
                bllmst.chkflg = GetN();
                bllmst.chkdat = "";
                bllmst.opr = LoginInfo.Usrid;
                bllmst.brief = odr.brief;
                bllmst.lnknewbllid = odr.bllid;
                bllmst.lnknewno = odr.stkinno;
                bllmst.lnknewbrief = odr.brief;
                this.WmsDc.wms_bllmst.InsertOnSubmit(bllmst);
                //--------------------- 2.生成明细 -----------------------------
                List <wms_blldtl> blldtls = new List <wms_blldtl>();
                List <WmsBllGds> gdss = new List <WmsBllGds>();
                foreach (var dtl in odr.stkindtl)
                {
                    wms_blldtl blldtl = new wms_blldtl();
                    blldtl.wmsno = bllmst.wmsno;
                    blldtl.bllid = bllmst.bllid;
                    blldtl.rcdidx = dtl.rcdidx;
                    blldtl.barcode = "";
                    blldtl.gdsid = dtl.gdsid;
                    blldtl.pkgid = "01";       //dtl.pkgid;
                    blldtl.qty = 0;
                    blldtl.preqty = Math.Round(dtl.qty, 4, MidpointRounding.AwayFromZero);
                    blldtl.gdstype = WMSConst.GDS_TYPE_NORMAL;
                    blldtl.bthno = string.IsNullOrEmpty(dtl.bthno) ? "1" : dtl.bthno;
                    blldtl.vlddat = string.IsNullOrEmpty(dtl.vlddat) ? GetCurrentDay() : dtl.vlddat;
                    blldtl.bcd = dtl.bcd == null ? "" : dtl.bcd;
                    blldtl.prvid = bllmst.prvid == null ? "" : dtl.prvid;
                    blldtl.bkr = "";
                    blldtl.bokflg = GetN();
                    blldtl.bokdat = GetCurrentDate();
                    blldtl.brief = "";

                    WmsBllGds gds = WmsDc.gds
                                    .Where(e => e.gdsid == dtl.gdsid)
                                    .Select(e => new WmsBllGds
                    {
                        gdsid = e.gdsid.Trim(),
                        gdsdes = e.gdsdes.Trim(),
                        spc = e.spc.Trim(),
                        bsepkg = e.bsepkg.Trim()
                    }).Single();
                    gdss.Add(gds);

                    blldtls.Add(blldtl);
                }
                this.WmsDc.wms_blldtl.InsertAllOnSubmit(blldtls);
                //===================== 生成一张新的收货单 =====================

                try
                {
                    var dtlstmp = (from e in blldtls
                                   join e1 in gdss on e.gdsid.Trim() equals e1.gdsid.Trim()
                                   select new
                    {
                        e.wmsno,
                        e.vlddat,
                        e.rcdidx,
                        e.qty,
                        e.prvid,
                        e.preqty,
                        e.pkgid,
                        e.gdstype,
                        e.gdsid,
                        e.brief,
                        e.bokflg,
                        e.bokdat,
                        e.bllid,
                        e.bkr,
                        e.bcd,
                        e.barcode,
                        e1.gdsdes,
                        e1.spc,
                        e1.bsepkg
                    }
                                   ).ToArray();
                    Wmsbll obj = new Wmsbll
                    {
                        mst = bllmst,
                        dptdes = (from e in WmsDc.dpt
                                  where e.dptid == odr.dptid.Trim()
                                  select e.dptdes).Single(),
                        prv = null,
                        dtl = blldtls.ToArray(),
                        gds = gdss.ToArray(),
                        dtls = dtlstmp
                    };

                    //obj = ((Wmsbll)Rm.ResultObject);
                    var objrm = new
                    {
                        obj.mst.arvdat,
                        obj.mst.bllid,
                        obj.mst.brief,
                        obj.mst.chkdat,
                        obj.mst.chkflg,
                        obj.mst.ckr,
                        obj.mst.hndbllno,
                        obj.mst.huojia,
                        obj.mst.lnknewbllid,
                        obj.mst.lnknewbrief,
                        obj.mst.lnknewno,
                        obj.mst.mkedat,
                        obj.mst.mkr,
                        obj.mst.odrdat,
                        obj.mst.opr,
                        obj.mst.prvid,
                        obj.mst.qu,
                        obj.mst.savdptid,
                        obj.mst.tongdao,
                        obj.mst.wmsno,
                        prvdes = "",    //obj.prv.prvdes,
                        obj.dptdes
                    };
                    Rm.ResultObject = objrm;

                    return Rm;
                }
                catch (Exception ex)
                {
                    return RRErr(ex.Message, "E0057");
                }
            })));
        }