Exemplo n.º 1
0
        public ActionResult BokBozBllGds(String wmsno, /* String stkouno,*/ String rcvdptid, String gdsid, double qty /*, int? rcdidx*/)
        {
            /*
             * 1、得到wmsno、rcvdptid对应的所有单据
             * 2、得到wmsno、rcvdptid和gdsid对应的所有明细
             * 3、判断这些主单是否已经有一张以上的单据已经审核
             * 4、判断该商品是否是本人播种
             * 5、判断这些单据的所有明细是否都已经播种完毕,播种完毕后就修改单据的审核标记,包括修改无货商品的数量
             */
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))          // 事务逻辑开始
            {
                // 得到货号
                gdsid = GetGdsidByGdsidOrBcd(gdsid);
                ////正在生成拣货单,请稍候重试
                //string quRetrv = GetQuByGdsid(gdsid, LoginInfo.DefStoreid).FirstOrDefault();
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo( "I0375" );
                //}
                if (gdsid == null) //货号为空,表示未找到该商品
                {
                    return(RInfo("I0376"));
                }
                String Dat = GetCurrentDay(); //得到当前日期


                try
                {
                    #region 1、得到wmsno、rcvdptid、gdsid对应的所有单据

                    //得到wmsno、rcvdptid、gdsid对应的所有单据
                    stkot[] stkots = GetStkots(wmsno, rcvdptid, gdsid);

                    //未找到单据
                    if (stkots.Length == 0)
                    {
                        return(RNoData("N0177"));
                    }
                    #endregion 1、得到wmsno、rcvdptid对应的所有单据

                    #region 2、得到wmsno、rcvdptid和gdsid对应的所有明细
                    string[] stkounos = stkots.Select(e => e.stkouno.Trim()).ToArray();
                    //得到相关单据号和商品编码对应的明细
                    stkotdtl[] stkotdtls = GetStkdtlsByStkounos(wmsno, gdsid, stkounos).OrderByDescending(e => e.preqty).ToArray();

                    //未找到对应的明细信息
                    if (stkotdtls.Length == 0)
                    {
                        return(RNoData("N0178"));
                    }
                    //判断preqty是否为null,为null就填qty
                    foreach (stkotdtl dtl in stkotdtls)
                    {
                        if (dtl.preqty == null)
                        {
                            dtl.preqty = dtl.qty;
                        }
                    }
                    WmsDc.SubmitChanges();
                    #endregion 2、得到wmsno、rcvdptid和gdsid对应的所有明细

                    #region 3、判断这些主单是否已经有一张以上的单据已经审核
                    foreach (stkot s in stkots)
                    {
                        if (s.chkflg == GetY())
                        {
                            return(RInfo("I0377", s.stkouno));
                        }
                    }
                    #endregion 3、判断这些主单是否已经有一张以上的单据已经审核

                    #region 4、判断该商品是否是本人播种
                    //查看该商品是否已经被非本人确认
                    foreach (stkotdtl stkdtl in stkotdtls)
                    {
                        if (stkdtl.bzflg == GetY() && stkdtl.bzr != LoginInfo.Usrid)
                        {
                            return(RInfo("I0378", stkdtl.bzr));
                        }
                    }
                    #endregion 4、判断该商品是否是本人播种

                    #region 修改这些明细的播种标记
                    //计算这些单据的应该播种数量是否大于实播种数量
                    #region 计算这些单据的应该播种数量是否大于实播种数量
                    double?preqty = stkotdtls.Sum(e => e.preqty);
                    if (preqty < qty)
                    { //如果实际播种数量大于应播数量就退出,不能继续
                        return(RInfo("I0379", qty, preqty));
                    }
                    else if (preqty > qty)
                    {                                       //如果实际播种数量小于应播数量,就修改实际的播种数量
                        double difQty = preqty.Value - qty; //得到差异数量
                        foreach (stkotdtl dtl in stkotdtls)
                        {
                            if (difQty > 0)
                            {
                                if (dtl.preqty >= difQty)
                                {
                                    /*
                                     * preqty = preqty==null ? qty : preqty
                                     *
                                     * 公式:taxamt = qty*prc*taxrto
                                     * amt = qty*prc
                                     * salamt = qty*salprc
                                     * patamt = qty*taxprc
                                     * stotcstamt = qty*stotcstprc
                                     *
                                     */
                                    double qty1 = dtl.preqty.Value - difQty;
                                    dtl.qty        = Math.Round(qty1, 4, MidpointRounding.AwayFromZero);
                                    dtl.pkgqty     = Math.Round(qty1, 4, MidpointRounding.AwayFromZero);
                                    dtl.taxamt     = Math.Round(qty * dtl.prc * dtl.taxrto, 4);
                                    dtl.amt        = Math.Round(qty * dtl.prc, 4);
                                    dtl.salamt     = qty * dtl.salprc;
                                    dtl.patamt     = Math.Round(qty * dtl.taxprc, 4);
                                    dtl.stotcstamt = Math.Round(qty * dtl.stotcstprc.Value, 4);
                                    difQty         = 0;

                                    //记录差异
                                    GetRealteQuResult qu = GetRealteQu(dtl.stkot.dptid, LoginInfo.DefSavdptid);
                                    Log.i(LoginInfo.Usrid, Mdlid, dtl.stkot.stkouno, dtl.stkot.bllid, "播种审核",
                                          gdsid.Trim() + ":应播:" + dtl.preqty.Value + ";实播:" + qty1,
                                          qu.qu, qu.savdptid);
                                }
                                else if (dtl.preqty < difQty)
                                {
                                    dtl.qty        = 0;
                                    dtl.pkgqty     = 0;
                                    dtl.taxamt     = 0;
                                    dtl.amt        = 0;
                                    dtl.salamt     = 0;
                                    dtl.patamt     = 0;
                                    dtl.stotcstamt = 0;
                                    difQty        -= dtl.preqty.Value;

                                    //记录差异
                                    GetRealteQuResult qu = GetRealteQu(dtl.stkot.dptid, LoginInfo.DefSavdptid);
                                    Log.i(LoginInfo.Usrid, Mdlid, dtl.stkot.stkouno, dtl.stkot.bllid, "播种审核",
                                          gdsid.Trim() + ":应播:" + dtl.preqty.Value + ";实播:" + 0,
                                          qu.qu, qu.savdptid);
                                }
                            }
                        }

                        WmsDc.SubmitChanges();
                    }
                    #endregion 计算这些单据的应该播种数量是否大于实播种数量

                    //修改稿明细的播种标记
                    #region 修改稿明细的播种标记
                    foreach (stkotdtl dtl in stkotdtls)
                    {
                        dtl.bzdat = GetCurrentDate();
                        dtl.bzr   = LoginInfo.Usrid;
                        dtl.bzflg = GetY();
                    }
                    WmsDc.SubmitChanges();
                    #endregion 修改稿明细的播种标记
                    #endregion 修改这些明细的播种标记

                    #region 5、判断这些单据的所有明细是否都已经播种完毕,播种完毕后就修改单据的审核标记,包括修改无货商品的数量
                    //判断这些单据的所有明细是否都已经播种完毕
                    foreach (stkot s in stkots)
                    {
                        WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, s);
                        if (s.chkflg == GetN())
                        {
                            bool hasAllBz = !(from e1 in WmsDc.stkotdtl
                                              where e1.stkouno == s.stkouno && e1.bzflg == GetN() && e1.qty > 0
                                              select 1).Any();
                            if (hasAllBz)       //如果都已经播种完了
                            {
                                CkBzFlg(s);
                                i(s.stkouno, s.bllid, "stkouno:" + s.stkouno + ", chkflg:" + s.chkflg + ", bzflg:" + s.bzflg, "", "", "");
                            }
                        }
                    }
                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("成功", null, "S0163"));

                    #endregion 5、判断这些单据的所有明细是否都已经播种完毕,播种完毕后就修改单据的审核标记,包括修改无货商品的数量
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0050"));
                }
            }                                                           // 事务逻辑结束

            #region 老的播种逻辑
            //using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            //{
            //    gdsid = GetGdsidByGdsidOrBcd(gdsid);
            //    if (gdsid == null)
            //    {
            //        return RInfo( "I0380" );
            //    }

            //    String Dat = GetCurrentDay();

            //    var qry = from e in WmsDc.stkot
            //              where e.stkouno == stkouno
            //              && e.bllid == WMSConst.BLL_TYPE_DISPATCH
            //              && dpts.Contains(e.dptid.Trim())
            //              && e.savdptid == LoginInfo.DefSavdptid
            //              && e.rcvdptid == rcvdptid
            //              select e;
            //    var arrqry = qry.ToArray();
            //    if (arrqry.Length <= 0)
            //    {
            //        return RNoData("N0179");
            //    }
            //    var stkotgds = arrqry[0];
            //    if (wmsno == null)
            //    {
            //        wmsno = stkotgds.wmsno;
            //    }
            //    if (stkotgds.chkflg == GetY())
            //    {
            //        return RInfo( "I0381" );
            //    }
            //    /*if (stkotgds.bzflg == GetY())
            //    {
            //        return RInfo( "I0382" );
            //    }*/
            //    var qrydtl = from e in stkotgds.stkotdtl
            //                 where e.gdsid.Trim() == gdsid.Trim() && e.rcdidx == rcdidx
            //                 select e;
            //    var arrqrydtl = qrydtl.ToArray();
            //    if (arrqrydtl.Length <= 0)
            //    {
            //        return RNoData("N0180");
            //    }
            //    stkotdtl stkdtl = arrqrydtl[0];
            //    double? preqty = stkdtl.preqty;
            //    if (stkdtl.preqty == null)              ///如果应收数量为空,就把qty中的数量填入其中
            //    {
            //        stkdtl.preqty = stkdtl.qty;
            //        preqty = stkdtl.qty;
            //    }
            //    if (preqty < qty)       //如果实收数量大于应收数量就退出
            //    {
            //        return RInfo( "I0383" );
            //    }
            //    if (preqty != qty)
            //    {
            //        GetRealteQuResult qu = GetRealteQu(stkotgds.dptid, LoginInfo.DefSavdptid);
            //        Log.i(LoginInfo.Usrid, Mdlid, stkotgds.stkouno, stkotgds.bllid, "播种审核",
            //            gdsid.Trim() + ":应播:" + preqty + ";实播:" + qty,
            //                qu.qu, qu.savdptid);
            //    }

            //    //查看该商品是否已经被非本人确认
            //    if (stkdtl.bzflg == GetY() && stkdtl.bzr != LoginInfo.Usrid)
            //    {
            //        return RInfo( "I0384",stkdtl.bzr  );
            //    }

            //    #region 检查参数有效性
            //    if (arrqry == null)
            //    {
            //        return RInfo( "I0385" );
            //    }
            //    if (stkdtl == null)
            //    {

            //        return RInfo( "I0386" );
            //    }

            //    #endregion

            //    //修改审核标记
            //    try
            //    {
            //        /*
            //            * preqty = preqty==null ? qty : preqty
            //            *
            //            * 公式:taxamt = qty*prc*taxrto
            //            * amt = qty*prc
            //            * salamt = qty*salprc
            //            * patamt = qty*taxprc
            //            * stotcstamt = qty*stotcstprc
            //            *
            //        */
            //        stkdtl.qty = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
            //        stkdtl.pkgqty = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
            //        stkdtl.bzdat = GetCurrentDate();
            //        stkdtl.bzr = LoginInfo.Usrid;
            //        stkdtl.bzflg = GetY();
            //        stkdtl.taxamt = Math.Round(qty * stkdtl.prc * stkdtl.taxrto, 4);
            //        stkdtl.amt = Math.Round(qty * stkdtl.prc, 4);
            //        stkdtl.salamt = qty * stkdtl.salprc;
            //        stkdtl.patamt = Math.Round(qty * stkdtl.taxprc, 4);
            //        stkdtl.stotcstamt = Math.Round(qty * stkdtl.stotcstprc.Value, 4);

            //        //判断改单据是否已经全部商品已经确认,全部确认后的,实收商品总数和应收商品总数相同就直接修改主单的审核标记
            //        /*double? sqty = stkotgds
            //                        .stkotdtl
            //                        .Where(e=>e.bzflg==GetY())
            //                        .Sum(e=>e.qty==null?0:e.qty);
            //        double? spreqty = stkotgds.stkotdtl.Sum(e=>e.preqty==null?e.qty:e.preqty);
            //        if(sqty==spreqty){
            //            stkotgds.chkflg = GetY();
            //            stkotgds.chkdat = Dat;
            //            stkotgds.ckr = LoginInfo.Usrid;
            //            stklst astklst = new stklst();
            //            astklst.stkouno = stkotgds.stkouno;
            //            WmsDc.stklst.InsertOnSubmit(astklst);
            //        }*/

            //        WmsDc.SubmitChanges();

            //        ///如果明细全部播种完
            //        ///就修改审核标记
            //        ///和播种标记
            //        double sqtycnt = stkotgds
            //                         .stkotdtl
            //                         .Where(e => e.bzflg == GetY() && Math.Round(e.qty, 2, MidpointRounding.AwayFromZero) != 0)
            //                         .Count();
            //        double spreqtycnt = stkotgds
            //                            .stkotdtl
            //                            .Where(e => Math.Round(e.qty, 2, MidpointRounding.AwayFromZero) != 0)
            //                            .Count();
            //        d(wmsno, WMSConst.BLL_TYPE_UPBLL, "审核播种商品", "sqtycnt=" + sqtycnt + "&spreqtycnt=" + spreqtycnt, "", LoginInfo.DefSavdptid);
            //        if (sqtycnt == spreqtycnt)
            //        {
            //            CkBzFlg(stkotgds);

            //            //查看有没有明细为空的单据,直接修改播种标记
            //            var qryZeroBz = from e in WmsDc.stkotdtl
            //                            where e.stkot.wmsno == wmsno && e.stkot.wmsbllid == WMSConst.BLL_TYPE_RETRIEVE
            //                            group e by e.stkouno into g
            //                            select new
            //                            {
            //                                stkouno = g.Key,
            //                                sqty = g.Sum(e => e.qty)
            //                            };
            //            qryZeroBz = qryZeroBz.Where(e => e.sqty == 0);
            //            var qryZeroBzmst = from e in WmsDc.stkot
            //                               join e1 in qryZeroBz on e.stkouno equals e1.stkouno
            //                               where e.chkflg != GetY()
            //                               select e;
            //            foreach (var q in qryZeroBzmst)
            //            {
            //                CkBzFlg(q);
            //                foreach (var dl in q.stkotdtl)
            //                {
            //                    dl.bzflg = GetY();
            //                    dl.bzdat = GetCurrentDate();
            //                    dl.bzr = LoginInfo.Usrid;
            //                }
            //            }

            //        }

            //        WmsDc.SubmitChanges();
            //        scop.Complete();
            //        return RSucc("成功", null, "S0164");
            //    }
            //    catch (Exception ex)
            //    {
            //        return RErr(ex.Message, "E0051");
            //    }
            //}
            #endregion 老的播种逻辑
        }
Exemplo n.º 2
0
        public ActionResult BokBozBllGds(String wmsno, String stkouno, String rcvdptid, String gdsid, double qty, int?rcdidx)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                gdsid = GetGdsidByGdsidOrBcd(gdsid);

                //正在生成拣货单,请稍候重试
                string quRetrv = GetQuByGdsid(gdsid, LoginInfo.DefStoreid).FirstOrDefault();
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo( "I0077" );
                //}

                if (gdsid == null)
                {
                    return(RInfo("I0078"));
                }

                String Dat = GetCurrentDay();

                /*
                 * var qry = from e in WmsDc.stkot
                 *        from e1 in e.stkotdtl
                 *        join e2 in WmsDc.gds on e1.gdsid equals e2.gdsid
                 *        where e.wmsno == wmsno
                 *        && e.bllid == WMSConst.BLL_TYPE_DISPATCH
                 *        && e.wmsbllid == WMSConst.BLL_TYPE_RETRIEVE
                 *        && dpts.Contains(e.dptid)
                 *        && e.savdptid == LoginInfo.DefSavdptid
                 *        && e.rcvdptid == rcvdptid
                 *        && e1.gdsid == gdsid
                 *        && e1.rcdidx == rcdidx
                 *        select e;
                 */

                var qry = from e in WmsDc.stkot
                          where e.stkouno == stkouno &&
                          e.bllid == WMSConst.BLL_TYPE_DISPATCH &&
                          e.wmsbllid == WMSConst.BLL_TYPE_RETRIEVE &&
                          dpts.Contains(e.dptid.Trim()) &&
                          (e.savdptid == LoginInfo.DefSavdptid || e.savdptid == LoginInfo.DefCsSavdptid) &&
                          e.rcvdptid == rcvdptid
                          select e;
                var arrqry = qry.ToArray();
                if (arrqry.Length <= 0)
                {
                    return(RNoData("N0048"));
                }
                var stkotgds = arrqry[0];
                if (wmsno == null)
                {
                    wmsno = stkotgds.wmsno;
                }
                if (stkotgds.chkflg == GetY())
                {
                    return(RInfo("I0079"));
                }

                /*if (stkotgds.bzflg == GetY())
                 * {
                 *  return RInfo( "I0080" );
                 * }*/
                var qrydtl = from e in stkotgds.stkotdtl
                             where e.gdsid.Trim() == gdsid.Trim() && e.rcdidx == rcdidx
                             select e;
                var arrqrydtl = qrydtl.ToArray();
                if (arrqrydtl.Length <= 0)
                {
                    return(RNoData("N0049"));
                }
                stkotdtl stkdtl = arrqrydtl[0];
                double?  preqty = stkdtl.preqty;
                if (stkdtl.preqty == null)              ///如果应收数量为空,就把qty中的数量填入其中
                {
                    stkdtl.preqty = stkdtl.qty;
                    preqty        = stkdtl.qty;
                }
                if (preqty < qty)       //如果实收数量大于应收数量就退出
                {
                    return(RInfo("I0081"));
                }
                if (preqty != qty)
                {
                    GetRealteQuResult qu = GetRealteQu(stkotgds.dptid, LoginInfo.DefSavdptid);
                    Log.i(LoginInfo.Usrid, Mdlid, stkotgds.stkouno, stkotgds.bllid, "播种审核",
                          gdsid.Trim() + ":应播:" + preqty + ";实播:" + qty,
                          qu.qu, qu.savdptid);
                }

                //查看该商品是否已经被非本人确认
                if (stkdtl.bzflg == GetY() && stkdtl.bzr != LoginInfo.Usrid)
                {
                    return(RInfo("I0082", stkdtl.bzr));
                }

                #region 检查参数有效性
                if (arrqry == null)
                {
                    return(RInfo("I0083"));
                }
                if (stkdtl == null)
                {
                    return(RInfo("I0084"));
                }

                #endregion

                //修改审核标记
                try
                {
                    /*
                     * preqty = preqty==null ? qty : preqty
                     *
                     * 公式:taxamt = qty*prc*taxrto
                     * amt = qty*prc
                     * salamt = qty*salprc
                     * patamt = qty*taxprc
                     * stotcstamt = qty*stotcstprc
                     *
                     */
                    stkdtl.qty        = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                    stkdtl.pkgqty     = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                    stkdtl.bzdat      = GetCurrentDate();
                    stkdtl.bzr        = LoginInfo.Usrid;
                    stkdtl.bzflg      = GetY();
                    stkdtl.taxamt     = Math.Round(qty * stkdtl.prc * stkdtl.taxrto, 4);
                    stkdtl.amt        = Math.Round(qty * stkdtl.prc, 4);
                    stkdtl.salamt     = qty * stkdtl.salprc;
                    stkdtl.patamt     = Math.Round(qty * stkdtl.taxprc, 4);
                    stkdtl.stotcstamt = Math.Round(qty * stkdtl.stotcstprc.Value, 4);

                    //判断改单据是否已经全部商品已经确认,全部确认后的,实收商品总数和应收商品总数相同就直接修改主单的审核标记

                    /*double? sqty = stkotgds
                     *              .stkotdtl
                     *              .Where(e=>e.bzflg==GetY())
                     *              .Sum(e=>e.qty==null?0:e.qty);
                     * double? spreqty = stkotgds.stkotdtl.Sum(e=>e.preqty==null?e.qty:e.preqty);
                     * if(sqty==spreqty){
                     *  stkotgds.chkflg = GetY();
                     *  stkotgds.chkdat = Dat;
                     *  stkotgds.ckr = LoginInfo.Usrid;
                     *  stklst astklst = new stklst();
                     *  astklst.stkouno = stkotgds.stkouno;
                     *  WmsDc.stklst.InsertOnSubmit(astklst);
                     * }*/

                    WmsDc.SubmitChanges();

                    ///如果明细全部播种完
                    ///就修改审核标记
                    ///和播种标记
                    double sqtycnt = stkotgds
                                     .stkotdtl
                                     .Where(e => e.bzflg == GetY() && Math.Round(e.qty, 2, MidpointRounding.AwayFromZero) != 0)
                                     .Count();
                    double spreqtycnt = stkotgds
                                        .stkotdtl
                                        .Where(e => Math.Round(e.qty, 2, MidpointRounding.AwayFromZero) != 0)
                                        .Count();
                    d(wmsno, WMSConst.BLL_TYPE_UPBLL, "审核播种商品", "sqtycnt=" + sqtycnt + "&spreqtycnt=" + spreqtycnt, "", LoginInfo.DefSavdptid);
                    if (sqtycnt == spreqtycnt)
                    {
                        CkBzFlg(stkotgds);

                        //查看有没有明细为空的单据,直接修改播种标记
                        var qryZeroBz = from e in WmsDc.stkotdtl
                                        where e.stkot.wmsno == wmsno && e.stkot.wmsbllid == WMSConst.BLL_TYPE_RETRIEVE
                                        group e by e.stkouno into g
                                        select new
                        {
                            stkouno = g.Key,
                            sqty    = g.Sum(e => e.qty)
                        };
                        qryZeroBz = qryZeroBz.Where(e => e.sqty == 0);
                        var qryZeroBzmst = from e in WmsDc.stkot
                                           join e1 in qryZeroBz on e.stkouno equals e1.stkouno
                                           where e.chkflg != GetY()
                                           select e;
                        foreach (var q in qryZeroBzmst)
                        {
                            CkBzFlg(q);
                            foreach (var dl in q.stkotdtl)
                            {
                                dl.bzflg = GetY();
                                dl.bzdat = GetCurrentDate();
                                dl.bzr   = LoginInfo.Usrid;
                            }
                        }
                    }

                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("成功", null, "S0038"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0012"));
                }
            }
        }
Exemplo n.º 3
0
        public ActionResult BokBozBllGds(String wmsno, String stkouno, String rcvdptid, String gdsid, double qty, int?rcdidx, String checi)
        {
            using (TransactionScope scop = new TransactionScope())
            {
                // done 删除临时调试日志
                //d(wmsno, WMSConst.BLL_TYPE_DISPATCH, "审核播种商品", "wmsno=" + wmsno + "&stkouno=" + stkouno + "&rcvdptid=" + rcvdptid + "&gdsid=" + gdsid + "&qty=" + qty + "&rcdidx=" + rcdidx + "&checi=" + checi, "", "");

                gdsid = GetGdsidByGdsidOrBcd(gdsid);
                //正在生成拣货单,请稍候重试
                //string quRetrv = GetQuByGdsid(gdsid, LoginInfo.DefStoreid).FirstOrDefault();
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo( "I0089" );
                //}

                if (gdsid == null)
                {
                    return(RInfo("I0090"));
                }

                String Dat = GetCurrentDay();

                //检查该单子的分单是否结束(拣货确认一条,就可以播种一条)
                var qryfd = from e in WmsDc.wms_cutgds
                            where e.wmsno == wmsno && e.gdsid == gdsid && e.checi == checi &&
                            e.chkflg == GetN()
                            select e;
                foreach (wms_cutgds c in qryfd)
                {
                    return(RInfo("I0091"));
                }

                /*
                 * var qry = from e in WmsDc.stkot
                 *        from e1 in e.stkotdtl
                 *        join e2 in WmsDc.gds on e1.gdsid equals e2.gdsid
                 *        where e.wmsno == wmsno
                 *        && e.bllid == WMSConst.BLL_TYPE_DISPATCH
                 *        && dpts.Contains(e.dptid)
                 *        && (e.savdptid == LoginInfo.DefSavdptid || e.savdptid == LoginInfo.DefCsSavdptid)
                 *        && e.rcvdptid == rcvdptid
                 *        && e1.gdsid == gdsid
                 *        && e1.rcdidx == rcdidx
                 *        select e;
                 */

                var qry = from e in WmsDc.stkot
                          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 }
                where e.stkouno == stkouno &&
                e.bllid == WMSConst.BLL_TYPE_DISPATCH &&
                dpts.Contains(e.dptid.Trim()) &&
                (e.savdptid == LoginInfo.DefSavdptid || e.savdptid == LoginInfo.DefCsSavdptid) &&
                e.rcvdptid == rcvdptid &&
                e5.busid.Trim().Substring(e5.busid.Trim().Length - 1, 1) == checi
                select e;
                var arrqry = qry.Distinct().ToArray();
                if (arrqry.Length <= 0)
                {
                    return(RNoData("N0056"));
                }
                var stkotgds = arrqry[0];
                if (wmsno == null)
                {
                    wmsno = stkotgds.wmsno;
                }
                if (stkotgds.chkflg == GetY())
                {
                    return(RInfo("I0092"));
                }

                /*if (stkotgds.bzflg == GetY())
                 * {
                 *  return RInfo( "I0093" );
                 * }*/
                var qrydtl = from e in stkotgds.stkotdtl
                             where e.gdsid.Trim() == gdsid.Trim() && e.rcdidx == rcdidx &&
                             (from e1 in WmsDc.wms_cutgds where e1.wmsno == stkotgds.wmsno && e1.bllid == stkotgds.wmsbllid && e1.gdsid == e.gdsid && e1.checi == checi select e1).Any()
                             select e;
                var arrqrydtl = qrydtl.ToArray();
                if (arrqrydtl.Length <= 0)
                {
                    return(RNoData("N0057"));
                }
                stkotdtl stkdtl = arrqrydtl[0];
                double?  preqty = stkdtl.preqty;
                if (stkdtl.preqty == null)              ///如果应收数量为空,就把qty中的数量填入其中
                {
                    stkdtl.preqty = stkdtl.qty;
                    preqty        = stkdtl.qty;
                }
                if (preqty < qty)       //如果实收数量大于应收数量就退出
                {
                    return(RInfo("I0094"));
                }
                if (preqty != qty)
                {
                    GetRealteQuResult qu = GetRealteQu(stkotgds.dptid, LoginInfo.DefSavdptid);
                    Log.i(LoginInfo.Usrid, Mdlid, stkotgds.stkouno, stkotgds.bllid, "播种审核",
                          gdsid.Trim() + ":应播:" + preqty + ";实播:" + qty,
                          qu.qu, qu.savdptid);
                }

                //查看该商品是否已经被非本人确认
                if (stkdtl.bzflg == GetY() && stkdtl.bzr != LoginInfo.Usrid)
                {
                    return(RInfo("I0095", stkdtl.bzr));
                }

                #region 检查参数有效性
                if (arrqry == null)
                {
                    return(RInfo("I0096"));
                }
                if (stkdtl == null)
                {
                    return(RInfo("I0097"));
                }

                #endregion

                //修改审核标记
                try
                {
                    /*
                     * preqty = preqty==null ? qty : preqty
                     *
                     * 公式:taxamt = qty*prc*taxrto
                     * amt = qty*prc
                     * salamt = qty*salprc
                     * patamt = qty*taxprc
                     * stotcstamt = qty*stotcstprc
                     *
                     */
                    stkdtl.qty        = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                    stkdtl.pkgqty     = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                    stkdtl.bzdat      = GetCurrentDate();
                    stkdtl.bzr        = LoginInfo.Usrid;
                    stkdtl.bzflg      = GetY();
                    stkdtl.taxamt     = Math.Round(qty * stkdtl.prc * stkdtl.taxrto, 4);
                    stkdtl.amt        = Math.Round(qty * stkdtl.prc, 4);
                    stkdtl.salamt     = qty * stkdtl.salprc;
                    stkdtl.patamt     = Math.Round(qty * stkdtl.taxprc, 4);
                    stkdtl.stotcstamt = Math.Round(qty * stkdtl.stotcstprc.Value, 4);

                    //判断改单据是否已经全部商品已经确认,全部确认后的,实收商品总数和应收商品总数相同就直接修改主单的审核标记

                    /*double? sqty = stkotgds
                     *              .stkotdtl
                     *              .Where(e=>e.bzflg==GetY())
                     *              .Sum(e=>e.qty==null?0:e.qty);
                     * double? spreqty = stkotgds.stkotdtl.Sum(e=>e.preqty==null?e.qty:e.preqty);
                     * if(sqty==spreqty){
                     *  stkotgds.chkflg = GetY();
                     *  stkotgds.chkdat = Dat;
                     *  stkotgds.ckr = LoginInfo.Usrid;
                     *  stklst astklst = new stklst();
                     *  astklst.stkouno = stkotgds.stkouno;
                     *  WmsDc.stklst.InsertOnSubmit(astklst);
                     * }*/

                    WmsDc.SubmitChanges();

                    ///如果明细全部播种完
                    ///就修改审核标记
                    ///和播种标记
                    double sqtycnt = stkotgds
                                     .stkotdtl
                                     .Where(e => e.bzflg == GetY() && Math.Round(e.qty, 2, MidpointRounding.AwayFromZero) != 0)
                                     .Count();
                    double spreqtycnt = stkotgds
                                        .stkotdtl
                                        .Where(e => Math.Round(e.qty, 2, MidpointRounding.AwayFromZero) != 0)
                                        .Count();
                    d(wmsno, WMSConst.BLL_TYPE_UPBLL, "审核播种商品", "sqtycnt=" + sqtycnt + "&spreqtycnt=" + spreqtycnt, "", LoginInfo.DefSavdptid);
                    if (sqtycnt == spreqtycnt)
                    {
                        CkBzFlg(stkotgds);

                        //查看有没有明细为空的单据,直接修改播种标记
                        var qryZeroBz = from e in WmsDc.stkotdtl
                                        where e.stkot.wmsno == wmsno && e.stkot.wmsbllid == WMSConst.BLL_TYPE_RETRIEVE
                                        group e by e.stkouno into g
                                        select new
                        {
                            stkouno = g.Key,
                            sqty    = g.Sum(e => e.qty)
                        };
                        qryZeroBz = qryZeroBz.Where(e => e.sqty == 0);
                        var qryZeroBzmst = from e in WmsDc.stkot
                                           join e1 in qryZeroBz on e.stkouno equals e1.stkouno
                                           where e.chkflg != GetY()
                                           select e;
                        foreach (var q in qryZeroBzmst)
                        {
                            CkBzFlg(q);
                            foreach (var dtl in q.stkotdtl)
                            {
                                dtl.bzflg = GetY();
                                dtl.bzdat = GetCurrentDate();
                                dtl.bzr   = LoginInfo.Usrid;
                            }
                        }
                    }

                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("成功", null, "S0047"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0013"));
                }
            }
        }
Exemplo n.º 4
0
        public ActionResult BokBozBllGds(String wmsno, String stkouno, String rcvdptid, String gdsid, double qty, int?rcdidx)
        {
            gdsid = GetGdsidByGdsidOrBcd(gdsid);
            ////正在生成拣货单,请稍候重试
            //string quRetrv = GetQuByGdsid(gdsid, LoginInfo.DefStoreid).FirstOrDefault();
            //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
            //{
            //    return RInfo( "I0064" );
            //}

            if (gdsid == null)
            {
                return(RInfo("I0065"));
            }

            String Dat = GetCurrentDay();

            var qry = from e in WmsDc.stkin
                      from e2 in e.stkindtl
                      join e1 in WmsDc.sftdtl on e.stkinno equals e1.stkinno
                      where //e.stkinno == stkouno &&
                      e.outwmsno == wmsno &&
                      e.bllid == WMSConst.BLL_TYPE_INNERADJ && e.outwmsbllid == WMSConst.BLL_TYPE_RETRIEVE &&
                      dpts.Contains(e.dptid.Trim()) &&
                      savdpts.Contains(e1.sft_sdtout)
                      //&& e1.sft_sdtout == rcvdptid
                      && e2.gdsid == gdsid &&
                      e.savdptid == rcvdptid
                      select e;
            var arrqry = qry.Distinct().ToArray();

            if (arrqry.Length <= 0)
            {
                return(RNoData("N0037"));
            }
            var stkotgds = arrqry[0];

            if (wmsno == null)
            {
                wmsno = stkotgds.outwmsno;
            }
            if (stkotgds.chkflg == GetY())
            {
                return(RInfo("I0066"));
            }

            /*if (stkotgds.bzflg == GetY())
             * {
             *  return RInfo( "I0067" );
             * }*/
            var qrydtl = from e in arrqry
                         from e1 in e.stkindtl
                         where e1.gdsid.Trim() == gdsid.Trim() //&& e.rcdidx == rcdidx
                         select e1;
            var arrqrydtl = qrydtl.ToArray();

            if (arrqrydtl.Length <= 0)
            {
                return(RNoData("N0038"));
            }
            var stkdtl = arrqrydtl[0];

            double?preqty = arrqrydtl.Sum(e => e.qty);

            if (preqty < qty)       //如果实收数量大于应收数量就退出
            {
                return(RInfo("I0068"));
            }
            if (preqty != qty)
            {
                GetRealteQuResult qu = GetRealteQu(stkotgds.dptid, LoginInfo.DefSavdptid);
                Log.i(LoginInfo.Usrid, Mdlid, stkotgds.stkinno, stkotgds.bllid, "播种审核",
                      gdsid.Trim() + ":应播:" + preqty + ";实播:" + qty,
                      qu.qu, qu.savdptid);
            }

            #region 检查参数有效性
            if (arrqry == null)
            {
                return(RInfo("I0069"));
            }
            if (stkdtl == null)
            {
                return(RInfo("I0070"));
            }

            //查看该商品是否已经被非本人确认
            if (stkdtl.bzflg == GetY() && stkdtl.bzr != LoginInfo.Usrid)
            {
                return(RInfo("I0071", stkdtl.bzr));
            }
            #endregion

            //修改审核标记
            try
            {
                /*
                 * preqty = preqty==null ? qty : preqty
                 *
                 * 公式:taxamt = qty*prc*taxrto
                 * amt = qty*prc
                 * salamt = qty*salprc
                 * patamt = qty*taxprc
                 * stotcstamt = qty*stotcstprc
                 *
                 */
                //stkdtl.qty = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                //stkdtl.pkgqty = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                foreach (stkindtl s in arrqrydtl)
                {
                    s.bzdat = GetCurrentDate();
                    s.bzr   = LoginInfo.Usrid;
                    s.bzflg = GetY();
                }
                //stkdtl.taxamt = Math.Round(qty * stkdtl.prc * stkdtl.taxrto, 4, MidpointRounding.AwayFromZero);
                //stkdtl.amt = Math.Round(qty * stkdtl.prc, 4);
                //stkdtl.salamt = qty * stkdtl.salprc;
                //stkdtl.patamt = Math.Round(qty * stkdtl.taxprc, 4);
                //stkdtl.stotcstamt = Math.Round(qty * stkdtl.stotcstprc.Value, 4);

                //判断改单据是否已经全部商品已经确认,全部确认后的,实收商品总数和应收商品总数相同就直接修改主单的审核标记

                /*double? sqty = stkotgds
                 *              .sivcdtl
                 *              .Where(e=>e.bzflg==GetY())
                 *              .Sum(e=>e.qty==null?0:e.qty);
                 * double? spreqty = stkotgds.sivcdtl.Sum(e=>e.preqty==null?e.qty:e.preqty);
                 * if(sqty==spreqty){
                 *  stkotgds.chkflg = GetY();
                 *  stkotgds.chkdat = Dat;
                 *  stkotgds.ckr = LoginInfo.Usrid;
                 *  stklst astklst = new stklst();
                 *  astklst.stkouno = stkotgds.stkouno;
                 *  WmsDc.stklst.InsertOnSubmit(astklst);
                 * }*/

                WmsDc.SubmitChanges();

                ///如果明细全部播种完
                ///就修改审核标记
                ///和播种标记
                double sqtycnt = stkotgds
                                 .stkindtl
                                 .Where(e => e.bzflg == GetY() && Math.Round(e.qty, 2, MidpointRounding.AwayFromZero) != 0)
                                 .Count();
                double spreqtycnt = stkotgds
                                    .stkindtl
                                    .Where(e => Math.Round(e.qty, 2, MidpointRounding.AwayFromZero) != 0)
                                    .Count();
                if (sqtycnt == spreqtycnt)
                {
                    CkBzFlg(stkotgds);

                    //查看有没有明细为空的单据,直接修改播种标记
                    var qryZeroBz = from e in WmsDc.stkindtl
                                    where e.stkin.outwmsno == wmsno && e.stkin.outwmsbllid == WMSConst.BLL_TYPE_RETRIEVE
                                    group e by e.stkinno into g
                                    select new
                    {
                        sivcno = g.Key,
                        sqty   = g.Sum(e => e.qty)
                    };
                    qryZeroBz = qryZeroBz.Where(e => e.sqty == 0);
                    var qryZeroBzmst = from e in WmsDc.stkin
                                       join e1 in qryZeroBz on e.stkinno equals e1.sivcno
                                       where e.chkflg != GetY()
                                       select e;
                    foreach (var q in qryZeroBzmst)
                    {
                        CkBzFlg(q);

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

                WmsDc.SubmitChanges();
                return(RSucc("成功", null, "S0025"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0009"));
            }
        }
Exemplo n.º 5
0
        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");
                }
            })));
        }
Exemplo n.º 6
0
        public ActionResult GenerateRecievBll(String odrno)
        {
            String qu = GetQuByDptid(odrno, LoginInfo.DefStoreid);

            return(MakeNewBllNo(
                       LoginInfo.DefSavdptid,
                       qu,
                       WMSConst.BLL_TYPE_REVIECEBLL,
                       ((bllno) =>
            {
                //WmsDc.Transaction = WmsDc.Connection.BeginTransaction();
                var qry = from e in WmsDc.odr
                          where e.odrno == odrno &&
                          e.savdptid == LoginInfo.DefSavdptid &&
                          e.bllid == WMSConst.BLL_TYPE_PURCHASE &&
                          e.ordstu == (char)ORD_STATUS.AUDIT && e.zdflg == GetN()
                          select new
                {
                    mst = e,
                    dtl = from e1 in WmsDc.odrdtl
                          where e1.odrno == odrno
                          select e1
                };
                var arrqry = qry.ToArray();
                //1.未找到供应商采购订单
                if (arrqry.Count() <= 0)
                {
                    return RRInfo("I0443");
                }

                //2.查看采购单据是否已经转过为收货单
                var qryshd = from e in WmsDc.wms_bllmst
                             where e.bllid == WMSConst.BLL_TYPE_REVIECEBLL &&
                             e.lnknewno == odrno
                             select e;
                if (qryshd.Count() > 0)
                {
                    return RRInfo("I0444");
                }

                var odr = arrqry[0];
                //修改转单标记
                String sNow = DateTime.Now.ToString("yyyyMMdd");
                String cmd = "update odr set zdflg='" + GetY() + "',zddat={0} where odrno={1}";
                WmsDc.ExecuteCommand(cmd, new[] { sNow, odrno });



                //===================== 生成一张新的收货单 =====================
                //--------------------- 1.生成主单 -----------------------------
                wms_bllmst bllmst = new wms_bllmst();
                bllmst.wmsno = bllno;
                bllmst.hndbllno = odr.mst.hndbllno;
                bllmst.bllid = WMSConst.BLL_TYPE_REVIECEBLL;
                bllmst.prvid = odr.mst.prvid;
                bllmst.savdptid = odr.mst.savdptid;
                //得到登录仓库所在部门的区位码
                GetRealteQuResult realte = GetRealteQu(odr.mst.dptid, LoginInfo.DefSavdptid);
                bllmst.qu = realte.qu;
                ////正在生成拣货单,请稍候重试
                //string quRetrv = bllmst.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RRInfo( "I0225" );
                //}

                /*bllmst.tongdao = odr.mst.tongdao;
                 * bllmst.huojia = odr.mst.huojia;*/
                bllmst.odrdat = odr.mst.odrdat;
                bllmst.arvdat = odr.mst.arvdat;
                bllmst.mkr = LoginInfo.Usrid;
                bllmst.mkedat = DateTime.Now.ToString("yyyyMMddhhmmss");
                bllmst.ckr = "";
                bllmst.chkflg = GetN();
                bllmst.chkdat = "";
                bllmst.opr = LoginInfo.Usrid;
                bllmst.brief = odr.mst.brief;
                bllmst.lnknewbllid = odr.mst.bllid;
                bllmst.lnknewno = odr.mst.odrno;
                bllmst.lnknewbrief = odr.mst.brief;
                this.WmsDc.wms_bllmst.InsertOnSubmit(bllmst);
                //--------------------- 2.生成明细 -----------------------------
                List <wms_blldtl> blldtls = new List <wms_blldtl>();
                List <WmsBllGds> gdss = new List <WmsBllGds>();
                foreach (odrdtl dtl in odr.dtl)
                {
                    if (dtl.qty != 0)
                    {
                        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 = dtl.bthno == null ? "" : dtl.bthno;
                        blldtl.vlddat = dtl.vlddat == null ? "" : dtl.vlddat;
                        blldtl.bcd = dtl.bcd == null ? "" : dtl.bcd;
                        blldtl.prvid = bllmst.prvid == null ? "" : dtl.prvid;
                        blldtl.bkr = "";
                        blldtl.bokflg = GetN();
                        blldtl.bokdat = "";
                        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.mst.dptid
                                  select e.dptdes).Single(),
                        prv = (from e4 in WmsDc.prv
                               where e4.prvid == bllmst.prvid
                               select new WmsBllPrv
                        {
                            prvid = e4.prvid.Trim(),
                            prvdes = e4.prvdes.Trim(),
                        }).Single(),
                        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,
                        obj.prv.prvdes,
                        obj.dptdes
                    };
                    Rm.ResultObject = objrm;

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