Ejemplo n.º 1
0
        public ActionResult DlPkgBcd(string pkgbcd, string gdsid)
        {
            if (string.IsNullOrEmpty(pkgbcd))
            {
                return(RInfo("I0502"));
            }
            gdsid = GetGdsidByGdsidOrBcd(gdsid);
            if (string.IsNullOrEmpty(gdsid))
            {
                return(RInfo("I0503"));
            }
            var qryPkgbcd = (from e in WmsDc.wms_pkgbcd
                             join e1 in WmsDc.emp on e.uptpsn equals e1.empid
                             where e.pkgbcd == pkgbcd.Trim() && e.gdsid == gdsid.Trim()
                             select new
            {
                e.gdsid,
                e.pkgbcd,
                uptpsndes = e1.empdes.Trim(),
                e.uptpsn
            }).FirstOrDefault();

            if (qryPkgbcd == null)
            {
                return(RNoData("N0259"));
            }

            var apkgbcd = WmsDc.wms_pkgbcd.Where(e => e.gdsid == gdsid.Trim() && e.pkgbcd == pkgbcd.Trim()).Select(e => e);

            WmsDc.wms_pkgbcd.DeleteAllOnSubmit(apkgbcd);
            WmsDc.SubmitChanges();

            return(RSucc("成功", null, "S0239"));
        }
Ejemplo n.º 2
0
        public ActionResult DlRetBllDetail(String wmsno, String gdsids)
        {
            String[] gdsid  = gdsids.Split(',');
            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.chkflg == GetY())
            {
                return(RInfo("I0293"));
            }
            //是否是本人制单
            if (!IsSameLogin(mst.mkr))
            {
                return(RInfo("I0294"));
            }

            if (dlarrdtl.Length <= 0)
            {
                return(RNoData("N0151"));
            }
            try
            {
                WmsDc.wms_cangdtl_109.DeleteAllOnSubmit(dlarrdtl);
                iDelCangDtl109(dlarrdtl, mst);
                //查询明细删除后,是否已经没有明细,没有明细就删除主单据
                var arrqrydtl = qrydtl.ToArray();
                if (arrqrydtl.Length <= 1)
                {
                    WmsDc.wms_cang_109.DeleteOnSubmit(mst);
                    iDelCangMst109(mst);
                }
                WmsDc.SubmitChanges();
                return(RSucc("删除成功", null, "S0139"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0039"));
            }
        }
Ejemplo n.º 3
0
        public ActionResult CancelAdtDtl(String wmsno, String gdsid, int rcdidx)
        {
            //检查单号是否存在
            var qrymst = from e in WmsDc.wms_cang_105
                         where e.wmsno == wmsno &&
                         e.bllid == WMSConst.BLL_TYPE_INVENTORY_CHECK
                         select e;
            var arrqrymst = qrymst.ToArray();
            var qrydtl    = from e in WmsDc.wms_cangdtl_105
                            where e.wmsno == wmsno &&
                            e.gdsid == gdsid && e.rcdidx == rcdidx &&
                            e.bllid == WMSConst.BLL_TYPE_INVENTORY_CHECK
                            select e;
            var arrqrydtl = qrydtl.ToArray();

            //单据是否找到
            if (arrqrymst.Length <= 0)
            {
                return(RNoData("N0106"));
            }
            //检查是否有数据权限
            wms_cang_105 mst = arrqrymst[0];

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

            /*if (!qus.Contains(mst.qu))
             * {
             *  return RInfo( "I0162" );
             * }*/
            // 判断有无重新复核的权限
            // 检查单号是否已经审核
            if (mst != null && mst.chkflg == GetY())
            {
                return(RInfo("I0163"));
            }
            if (arrqrydtl.Length <= 0)
            {
                return(RNoData("N0107"));
            }
            wms_cangdtl_105 dtl = arrqrydtl[0];

            dtl.bokflg = GetN();
            dtl.bokdat = GetCurrentDate();
            dtl.bkr    = "";
            try
            {
                WmsDc.SubmitChanges();
                return(RSucc("成功", null, "S0092"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0020"));
            }
        }
Ejemplo n.º 4
0
        private void CkBzFlg(sivc q)
        {
            //盘点是否有为空的明细
            var qrydtl = q.sivcdtl.Where(e => e.qty == 0 && e.bzflg == GetN());

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

            WmsDc.SubmitChanges();

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

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

            foreach (var t in q.sivcdtl)
            {
                gdsbs g = new gdsbs();
                //g.actid = t.actid;
                //g.brief = t.brief;
                g.srcbllno   = t.sivcno;
                g.srcrcdidx  = t.rcdidx;
                g.fscprdid   = GetCurrentFscprdid();
                g.bllid      = t.sivc.bllid;
                g.dptid      = t.sivc.dptid;
                g.depid      = t.depid;
                g.empid      = LoginInfo.Usrid;
                g.gdsid      = t.gdsid;
                g.actdat     = GetCurrentDay();
                g.dbtcrt     = '1';
                g.qty        = t.qty;
                g.prc        = t.prc;
                g.amt        = t.amt;
                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.sivc.savdptid);
                lstGdsbs.Add(g);
            }
            WmsDc.gdsbs.InsertAllOnSubmit(lstGdsbs);

            stklst astklst = new stklst();

            astklst.stkouno = q.sivcno;
            WmsDc.stklst.InsertOnSubmit(astklst);
        }
Ejemplo n.º 5
0
        public ActionResult DlRetPrvBll(String wmsno)
        {
            //检查单号是否存在
            var qrymst = from e in WmsDc.wms_cang_110
                         where e.wmsno == wmsno &&
                         e.bllid == WMSConst.BLL_TYPE_RETPRV
                         select e;
            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("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.chkflg == GetY())
            {
                return(RInfo("I0342"));
            }
            //是否是同一个人制单
            if (!IsSameLogin(mst.mkr))
            {
                return(RInfo("I0343", mst.mkr, LoginInfo.Usrid));
            }
            //删除单据明细
            WmsDc.wms_cangdtl_110.DeleteAllOnSubmit(arrqrydtl);
            WmsDc.wms_cang_110.DeleteAllOnSubmit(arrqrymst);
            iDelCangDtl110(arrqrydtl, mst);
            iDelCangMst110(arrqrymst[0]);
            //删除主单据
            try
            {
                WmsDc.SubmitChanges();
                return(RSucc("成功", null, "S0151"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0045"));
            }
        }
Ejemplo n.º 6
0
        public ActionResult MdfyRecievGdsType(String wmsno, String gdsid, String gdstype, String newgdstype)
        {
            gdsid = GetGdsidByGdsidOrBcd(gdsid);
            ////正在生成拣货单,请稍候重试
            //string quRetrv = GetQuByGdsid(gdsid, LoginInfo.DefStoreid).FirstOrDefault();
            //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
            //{
            //    return RInfo( "I0233" );
            //}

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

            /*var qry = from e in WmsDc.wms_blldtl
             *        where e.wmsno == wmsno
             *        && e.gdsid == gdsid
             *        select e;
             * var arrqry = qry.ToArray();
             * if (arrqry.Length <= 0)
             * {
             *  return RNoData("N0127");
             * }
             * wms_blldtl dtl = arrqry[0];*/
            var qry = from e in WmsDc.wms_blltp
                      where e.wmsno == wmsno &&
                      e.bllid == WMSConst.BLL_TYPE_REVIECEBLL &&
                      e.gdsid == gdsid &&
                      e.gdstype == gdstype
                      select e;
            var arrqry = qry.ToArray();

            /*wms_blldtl[] dtls = GetDtl(wmsno).Where(e => e.gdsid == gdsid && e.gdstype == gdstype).ToArray();
             * if (arrqry.Length <= 0 || dtls.Length <= 0)
             * {
             *  return RNoData("N0128");
             * }*/
            wms_blltp tp = arrqry[0];

            tp.gdstype = gdstype;

            /*wms_blldtl dtl = dtls.FirstOrDefault();
             * dtl.gdstype = gdstype;*/
            try
            {
                WmsDc.SubmitChanges();

                return(RSucc("成功", arrqry[0], "S0114"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0029"));
            }
        }
Ejemplo n.º 7
0
        public ActionResult BokBozBllGdss(String wmsnos, String stkounos, String rcvdptids, String gdsids, string qtys, string rcdidxs, String checis)
        {
            JsonResult jr = null;

            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                string[] awmsno    = wmsnos.Split(',');
                string[] astkouno  = stkounos.Split(',');
                string[] arcvdptid = rcvdptids.Split(',');
                string[] agdsid    = gdsids.Split(',');
                string[] aqty      = qtys.Split(',');
                string[] arcdidx   = rcdidxs.Split(',');
                string[] acheci    = checis.Split(',');
                if (awmsno.Length != astkouno.Length ||
                    awmsno.Length != arcvdptid.Length ||
                    awmsno.Length != agdsid.Length ||
                    awmsno.Length != aqty.Length ||
                    awmsno.Length != arcdidx.Length ||
                    awmsno.Length != acheci.Length)
                {
                    return(RInfo("I0491"));
                }
                else
                {
                    for (int i = 0; i < awmsno.Length; i++)
                    {
                        double qty    = 0;
                        int    rcdidx = -1;
                        if (!double.TryParse(aqty[i].Trim(), out qty))
                        {
                            return(RInfo("I0489"));
                        }
                        if (!int.TryParse(arcdidx[i].Trim(), out rcdidx))
                        {
                            return(RInfo("I0490"));
                        }

                        jr = (JsonResult)BokBozBllGds(awmsno[i], astkouno[i], arcvdptid[i], agdsid[i], qty, rcdidx, acheci[i]);
                        ResultMessage rm = (ResultMessage)jr.Data;
                        if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                        {
                            return(jr);
                        }
                    }
                }

                WmsDc.SubmitChanges();
                scop.Complete();

                return(jr == null?RSucc("成功", null, "S0231") : jr);
            }
        }
Ejemplo n.º 8
0
        private void CkBzFlg(stkot p)
        {
            //盘点是否有为空的明细
            var qrydtl = p.stkotdtl.Where(e => e.qty == 0 && e.bzflg == GetN());

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

            //修改播种标记
            p.bzflg = GetY();
            //审核配送单
            p.chkflg = GetY();
            p.chkdat = GetCurrentDay();
            p.ckr    = LoginInfo.Usrid;
            WmsDc.SubmitChanges();

            //写入dtrlog
            //查看是否dtrlog已经有单据,没有就插入
            var qry = WmsDc.dtrlog
                      .Where(e => e.rcvdptid == p.rcvdptid && e.bllno == p.stkouno && e.bllid == p.bllid)
                      .Select(e => e.bllno);
            var arrqry = qry.ToArray();

            if (arrqry.Length <= 0)
            {
                dtrlog dl = new dtrlog();
                dl.bllid    = p.bllid;
                dl.bllno    = p.stkouno;
                dl.rcvdptid = p.rcvdptid;
                WmsDc.dtrlog.InsertOnSubmit(dl);
            }

            WmsDc.SubmitChanges();


            if (!(WmsDc.stklst.Where(e => e.stkouno == p.stkouno)).Any())
            {
                stklst astklst = new stklst();
                astklst.stkouno = p.stkouno;
                WmsDc.stklst.InsertOnSubmit(astklst);
                //WmsDc.SubmitChanges();
            }

            WmsDc.SubmitChanges();
        }
Ejemplo n.º 9
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"));
        }
Ejemplo n.º 10
0
        public ActionResult AddPkgBcd(String pkgbcd, String gdsid)
        {
            if (string.IsNullOrEmpty(pkgbcd))
            {
                return(RInfo("I0500"));
            }
            gdsid = GetGdsidByGdsidOrBcd(gdsid);
            if (string.IsNullOrEmpty(gdsid))
            {
                return(RInfo("I0501"));
            }
            var qryPkgbcd = (from e in WmsDc.wms_pkgbcd
                             join e1 in WmsDc.emp on e.uptpsn equals e1.empid
                             join e2 in WmsDc.gds on e.gdsid equals e2.gdsid
                             where e.pkgbcd == pkgbcd.Trim()
                             select new{
                e.gdsid, e.pkgbcd, uptpsndes = e1.empdes.Trim(), e.udtdtm,
                e.uptpsn, e2.gdsdes, e2.spc, e2.bsepkg
            }).FirstOrDefault();

            if (qryPkgbcd != null)
            {
                //return RInfo("I0499", pkgbcd.Trim(), qryPkgbcd.gdsid, qryPkgbcd.gdsdes, qryPkgbcd.spc, qryPkgbcd.bsepkg, qryPkgbcd.udtdtm, qryPkgbcd.uptpsndes);
                return(RInfo("I0499", qryPkgbcd));
            }
            string gdsid1 = GetGdsidByGdsidOrBcd(pkgbcd);

            if (!string.IsNullOrEmpty(gdsid1))
            {
                return(RInfo("I0505"));
            }
            string bcd = GetABcdByGdsid1(gdsid);

            if (bcd == pkgbcd)
            {
                return(RInfo("I0504", pkgbcd, bcd));
            }

            wms_pkgbcd apkgbcd = new wms_pkgbcd();

            apkgbcd.pkgbcd = pkgbcd;
            apkgbcd.gdsid  = gdsid;
            apkgbcd.uptpsn = LoginInfo.Usrid;
            apkgbcd.udtdtm = GetCurrentDate();
            WmsDc.wms_pkgbcd.InsertOnSubmit(apkgbcd);
            WmsDc.SubmitChanges();

            return(RSucc("成功", qryPkgbcd, "S0238"));
        }
Ejemplo n.º 11
0
        protected void RedcStkotQtyNew(stkotdtl[] stkotdtl, double diffQty)
        {
            double diff = diffQty;

            if (diffQty == 0)
            {
                return;
            }

            foreach (stkotdtl d in stkotdtl)
            {
                if (diffQty == 0)
                {
                    break;
                }
                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(ConflictMode.FailOnFirstConflict);
        }
Ejemplo n.º 12
0
        private void CkBzFlg(stkot p)
        {
            i(p.wmsno, "", System.DateTime.Now.ToString("yyyyMMddHHmmss.fff"), Request["rnd"], "3", LoginInfo.DefSavdptid);

            //盘点是否有为空的明细
            var qrydtl = p.stkotdtl.Where(e => e.qty == 0 && e.bzflg == GetN());

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

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

            //写入dtrlog
            //查看是否dtrlog已经有单据,没有就插入
            var qry = WmsDc.dtrlog
                      .Where(e => e.rcvdptid == p.rcvdptid && e.bllno == p.stkouno && e.bllid == p.bllid)
                      .Select(e => e.bllno);
            var arrqry = qry.ToArray();

            if (arrqry.Length <= 0)
            {
                dtrlog dl = new dtrlog();
                dl.bllid    = p.bllid;
                dl.bllno    = p.stkouno;
                dl.rcvdptid = p.rcvdptid;
                WmsDc.dtrlog.InsertOnSubmit(dl);
            }
            if (!(WmsDc.stklst.Where(e => e.stkouno == p.stkouno)).Any())
            {
                stklst astklst = new stklst();
                astklst.stkouno = p.stkouno;
                WmsDc.stklst.InsertOnSubmit(astklst);
                WmsDc.SubmitChanges();
            }

            i(p.wmsno, "", System.DateTime.Now.ToString("yyyyMMddHHmmss.fff"), Request["rnd"], "4", LoginInfo.DefSavdptid);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 日志记录
        /// </summary>
        /// <param name="man"></param>
        /// <param name="mdlid"></param>
        /// <param name="wmsno"></param>
        /// <param name="bllid"></param>
        /// <param name="actid"></param>
        /// <param name="brief"></param>
        /// <param name="qu"></param>
        /// <param name="savdptid"></param>
        public void i(String man, String mdlid, String wmsno, String bllid, String actid, String brief, String qu, String savdptid)
        {
            wms_log log = new wms_log();

            log.brief    = brief;
            log.logact   = actid;
            log.logdat   = DateTime.Now.ToString("yyyyMMddHHmmss");
            log.logman   = man;
            log.logmdl   = "[PDA]" + (mdlid.Length >= 5 ? mdlid.Substring(0, 5) : mdlid);
            log.qu       = qu;
            log.savdptid = savdptid;
            log.wmsno    = wmsno;
            log.bllid    = bllid;

            WmsDc.wms_log.InsertOnSubmit(log);
            WmsDc.SubmitChanges();
        }
Ejemplo n.º 14
0
        public ActionResult AdPrftOLsses(String wmsno, String barcodes, String gdsids, String gdstypes, String bthnos, String vlddats, String qtys, String rsns)
        {
            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(',');
                String[]      rsn     = rsns.Split(',');
                List <object> retObjs = new List <object>();
                if (
                    (barcode.Length != gdsid.Length) ||
                    (barcode.Length != qty.Length) ||
                    (gdsid.Length != qty.Length) ||
                    (gdstype.Length != gdsid.Length) ||
                    (rsn.Length != gdsid.Length)
                    )
                {
                    return(RInfo("I0202"));
                }

                for (int i = 0; i < gdsid.Length; i++)
                {
                    double d = 0;
                    if (!double.TryParse(qty[i], out d))
                    {
                        return(RInfo("I0203", gdsid[i], qty[i]));
                    }

                    JsonResult    jr = (JsonResult)AdPrftOLss(wmsno, barcode[i], gdsid[i], gdstype[i], bthno[i], vlddat[i], d, rsn[i]);
                    ResultMessage rm = (ResultMessage)jr.Data;
                    if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                    {
                        return(jr);
                    }
                    retObjs.Add(rm.ResultObject);
                }
                WmsDc.SubmitChanges();
                scop.Complete();
                return(RSucc("成功", retObjs, "S0102"));
            }
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 修改损溢单
        /// </summary>
        /// <param name="wmsno"></param>
        /// <param name="gdsid"></param>
        /// <param name="gdstype"></param>
        /// <param name="newbarcode">新仓位码</param>
        /// <param name="rcdidx"></param>
        /// <param name="qty"></param>
        /// <returns></returns>
        public ActionResult MdAPrftOLss(String wmsno, String gdsid, String newbarcode, String gdstype, int rcdidx, double qty, String rsn)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //检查单号是否存在
                var qrymst = from e in WmsDc.wms_cang_111
                             where e.wmsno == wmsno &&
                             e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS &&
                             qus.Contains(e.qu.Trim())
                             select e;
                var arrqrymst = qrymst.ToArray();
                var qrydtl    = from e in WmsDc.wms_cangdtl_111
                                where e.wmsno == wmsno &&
                                e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS &&
                                e.gdsid == gdsid && e.rcdidx == rcdidx
                                orderby e.rcdidx descending
                                select e;
                var arrqrydtl = qrydtl.ToArray();

                //检查barcode是否有效
                if (!IsExistBarcode(newbarcode))
                {
                    return(RInfo("I0191", newbarcode));
                }

                //单据是否找到
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0116"));
                }
                //检查是否有数据权限
                wms_cang_111 mst = arrqrymst[0];
                //正在生成拣货单,请稍候重试 ,如果是报损
                if (mst.times.Trim() == "-")
                {
                    string quRetrv = mst.qu;
                    if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                    {
                        return(RInfo("I0192"));
                    }
                }

                if (!qus.Contains(mst.qu.Trim()))
                {
                    return(RInfo("I0193"));
                }
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0194"));
                }
                //未找到该商品
                if (arrqrydtl.Length <= 0)
                {
                    return(RNoData("N0117"));
                }
                //是否是本人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0195"));
                }

                //判断QTY应该为正为负数
                if (mst.times.Trim() == "+" && qty < 0)
                {
                    return(RInfo("I0196"));
                }
                if (mst.times.Trim() == "-" && qty > 0)
                {
                    return(RInfo("I0197"));
                }
                if (mst.times.Trim() == "-" && rsn.Trim() == "")
                {
                    return(RInfo("I0198", gdsid));
                }

                //判断新仓位码是否和主单是一个区
                if (mst.qu.Trim() != newbarcode.Substring(0, 2))
                {
                    return(RInfo("I0199"));
                }

                //修改数量
                arrqrydtl[0].barcode = newbarcode;
                arrqrydtl[0].qty     = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                arrqrydtl[0].pkgqty  = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                arrqrydtl[0].preqty  = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
                if (!String.IsNullOrEmpty(gdstype))
                {
                    arrqrydtl[0].gdstype = gdstype;
                }



                //如果是报损,判断是否有库存
                if (mst.times.Trim() == "-")
                {
                    //修改数量
                    wms_cangdtl_111 dtl = arrqrydtl[0];

                    //得到一个商品的库存数量
                    GdsInBarcode[] gb = GetAGdsQtyInBarcode(dtl.barcode, gdsid, dtl.gdstype)
                                        .Where(e => e.vlddat == dtl.vlddat.Trim() && e.bthno == dtl.bthno.Trim())
                                        .ToArray();
                    double bqty  = (gb == null || gb.Length <= 0) ? 0 : gb[0].sqty;
                    double ktqty = Math.Abs(bqty) + Math.Abs(dtl.qty);  //可调数量 = 库存数量+本单该商品的数量
                    //如果 需调整数量 > 可调数量
                    if (Math.Abs(qty) > Math.Abs(ktqty))
                    {
                        return(RInfo("I0200", qty, ktqty));
                    }

                    dtl.brfdtl = rsn.ToString();
                    //return RInfo( "I0201",gdsid ,arrqrydtl[0].barcode  );
                }

                try
                {
                    WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                    //检查单号是否已经审核
                    if (mst != null && mst.chkflg == GetY())
                    {
                        return(RInfo("I0207"));
                    }

                    WmsDc.SubmitChanges();

                    //修改主单时间戳
                    string sql  = @"update wms_cang_111 set bllid='111' where wmsno='" + mst.wmsno + "' and bllid='111' and udtdtm={0}";
                    int    iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm);
                    if (iEff == 0)
                    {
                        return(RInfo("I0207"));
                    }


                    scop.Complete();
                    return(RSucc("成功", arrqrydtl[0], "S0101"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0025"));
                }
            }
        }
Ejemplo n.º 16
0
        public ActionResult DlPrftOLssBll(String wmsno)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //检查单号是否存在
                var qrymst = from e in WmsDc.wms_cang_111
                             where e.wmsno == wmsno &&
                             e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS &&
                             qus.Contains(e.qu.Trim())
                             select e;
                var arrqrymst = qrymst.ToArray();
                var qrydtl    = from e in WmsDc.wms_cangdtl_111
                                where e.wmsno == wmsno &&
                                e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS
                                select e;
                var arrqrydtl = qrydtl.ToArray();
                int iDtlCount = arrqrydtl.Length;
                //单据是否找到
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0115"));
                }
                //检查是否有数据权限
                wms_cang_111 mst = arrqrymst[0];
                //正在生成拣货单,请稍候重试
                if (mst.times.Trim() == "-")
                {
                    string quRetrv = mst.qu;
                    if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                    {
                        return(RInfo("I0187"));
                    }
                }

                if (!qus.Contains(mst.qu.Trim()))
                {
                    return(RInfo("I0188"));
                }
                //是否是本人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0189"));
                }
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0190"));
                }



                try
                {
                    //删除单据明细
                    WmsDc.wms_cangdtl_111.DeleteAllOnSubmit(arrqrydtl);
                    WmsDc.SubmitChanges();
                    WmsDc.wms_cang_111.DeleteAllOnSubmit(arrqrymst);
                    iDelCangDtl111(arrqrydtl, mst);
                    iDelCangMst111(mst);
                    //删除主单据
                    WmsDc.SubmitChanges();

                    scop.Complete();
                    return(RSucc("成功", null, "S0100"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0024"));
                }
            }
        }
Ejemplo n.º 17
0
        public ActionResult DlPrftOLssBllDtl(String wmsno, String gdsid, int rcdidx)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //检查单号是否存在
                var qrymst = from e in WmsDc.wms_cang_111
                             where e.wmsno == wmsno &&
                             e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS &&
                             qus.Contains(e.qu.Trim())
                             select e;
                var arrqrymst = qrymst.ToArray();
                var qrydtl    = from e in WmsDc.wms_cangdtl_111
                                where e.wmsno == wmsno
                                //&& e.gdsid == gdsid && e.rcdidx == rcdidx
                                && e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS
                                select e;
                var arrqrydtl  = qrydtl.ToArray();
                var arrqrydtl1 = qrydtl.Where(e => e.gdsid == gdsid && e.rcdidx == rcdidx).ToArray();
                //单据是否找到
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0114"));
                }
                //检查是否有数据权限
                wms_cang_111 mst = arrqrymst[0];

                //正在生成拣货单,请稍候重试
                if (mst.times.Trim() == "-")
                {
                    string quRetrv = mst.qu;
                    if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                    {
                        return(RInfo("I0182"));
                    }
                }

                if (!qus.Contains(mst.qu.Trim()))
                {
                    return(RInfo("I0184"));
                }
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0185"));
                }
                //是否是本人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0186"));
                }
                //删除单据明细
                int iDtlCnt = arrqrydtl.Length;
                WmsDc.wms_cangdtl_111.DeleteAllOnSubmit(arrqrydtl1);
                iDelCangDtl111(arrqrydtl1, mst);
                if (iDtlCnt == 1)
                {
                    WmsDc.wms_cang_111.DeleteAllOnSubmit(arrqrymst);
                    iDelCangMst111(mst);
                }
                //删除主单据
                try
                {
                    //检查单号是否已经审核
                    if (mst != null && mst.chkflg == GetY())
                    {
                        return(RInfo("I0207"));
                    }

                    WmsDc.SubmitChanges();

                    if (iDtlCnt > 1)
                    {
                        //修改主单时间戳
                        //WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                        string sql  = @"update wms_cang_111 set bllid='111' where wmsno='" + mst.wmsno + "' and bllid='111' and udtdtm={0}";
                        int    iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm);
                        if (iEff == 0)
                        {
                            return(RInfo("I0207"));
                        }
                    }

                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("成功", null, "S0099"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0023"));
                }
            }
        }
Ejemplo n.º 18
0
        public ActionResult MkPrftOLssBll(String barcodes, String gdsids, String gdstypes, String bthnos, String vlddats, String qtys, String rsns)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                String[] barcode  = barcodes.Split(',');
                String   qu       = barcode[0].Substring(0, 2);
                String   savdptid = GetSavdptidByQu(qu);

                return(MakeNewBllNo(savdptid, qu, WMSConst.BLL_TYPE_PROFITORLOSS, (bllno) =>
                {
                    //检查并创建明细
                    JsonResult jr = (JsonResult)_MakeParam(bllno, barcodes, gdsids, gdstypes, bthnos, vlddats, qtys, rsns);
                    ResultMessage rm = (ResultMessage)jr.Data;
                    if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                    {
                        return rm;
                    }

                    //创建主表
                    wms_cangdtl_111[] dtls = (wms_cangdtl_111[])rm.ResultObject;
                    wms_cang_111 mst = new wms_cang_111();
                    mst.wmsno = bllno;
                    mst.bllid = WMSConst.BLL_TYPE_PROFITORLOSS;
                    mst.savdptid = savdptid;
                    mst.prvid = "";
                    //String qu = dtls[0].barcode.Substring(0,2) ; //GetQuByGdsid(dtls[0].gdsid, LoginInfo.DefStoreid);
                    mst.qu = qu;
                    mst.rcvdptid = "";
                    String symbol = "+";  //symbol="+"报溢,symbol="-"报损
                    if (dtls.Length > 0)
                    {
                        double?dqty = dtls[0].qty;
                        symbol = dqty != null && dqty >= 0 ? "+" : "-";
                    }
                    mst.times = symbol;
                    //正在生成拣货单,请稍候重试
                    if (mst.times.Trim() == "-")
                    {
                        string quRetrv = qu;
                        if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                        {
                            return RRInfo("I0182");
                        }
                    }

                    /*if (HasCkBll(qu, LoginInfo.Usrid, savdptid, symbol))
                     * {
                     *  return RRInfo("I0441");
                     *
                     * }*/

                    mst.lnkbocino = "";
                    mst.lnkbocidat = "";
                    mst.mkr = LoginInfo.Usrid;
                    mst.mkedat = GetCurrentDay();
                    mst.mkedat2 = GetCurrentDate();
                    mst.ckr = "";
                    mst.chkflg = GetN();
                    mst.chkdat = "";
                    mst.opr = LoginInfo.Usrid;
                    mst.brief = "";
                    mst.lnkbllid = "";
                    mst.lnkno = "";
                    mst.lnkbrief = "";

                    //如果是报损,判断是否有库存
                    foreach (wms_cangdtl_111 d in dtls)
                    {
                        if (mst.times.Trim() == "-")
                        {
                            if (d.brfdtl.Trim() == "")
                            {
                                return RRInfo("I0442", d.gdsid);
                            }

                            //得到一个商品的库存数量
                            GdsInBarcode[] gb = GetAGdsQtyInBarcode(d.barcode, d.gdsid, d.gdstype)
                                                .Where(e => e.vlddat == d.vlddat.Trim() && e.bthno == d.bthno.Trim())
                                                .ToArray();
                            double bqty = (gb == null || gb.Length <= 0) ? 0 : gb[0].sqty;
                            double ktqty = bqty;  //可调数量 = 库存数量
                            //如果 需调整数量 > 可调数量
                            if (d.qty > ktqty)
                            {
                                return RRNoData("N0238", d.gdsid, d.barcode);
                            }
                        }
                    }

                    try
                    {
                        WmsDc.wms_cang_111.InsertOnSubmit(mst);
                        WmsDc.SubmitChanges();
                        WmsDc.wms_cangdtl_111.InsertAllOnSubmit(dtls);

                        WmsDc.SubmitChanges();
                        scop.Complete();
                        return RRSucc("成功", mst, "S0217");
                    }
                    catch (Exception ex)
                    {
                        return RRErr(ex.Message, "E0064");

                        rm.ResultObject = null;
                        return rm;
                    }
                }));
            }
        }
Ejemplo n.º 19
0
        public ActionResult DlInvCkBll(String wmsno)
        {
            //检查单号是否存在
            var qrymst = from e in WmsDc.wms_cang_105
                         where e.wmsno == wmsno &&
                         e.bllid == WMSConst.BLL_TYPE_INVENTORY_CHECK
                         select e;
            var arrqrymst = qrymst.ToArray();
            var qrydtl    = from e in WmsDc.wms_cangdtl_105
                            where e.wmsno == wmsno &&
                            e.bllid == WMSConst.BLL_TYPE_INVENTORY_CHECK
                            select e;
            var arrqrydtl = qrydtl.ToArray();

            //单据是否找到
            if (arrqrymst.Length <= 0)
            {
                return(RNoData("N0094"));
            }
            //检查是否有数据权限
            wms_cang_105 mst = arrqrymst[0];

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

            if (!qus.Contains(mst.qu.Trim()))
            {
                return(RInfo("I0149"));
            }
            //检查单号是否已经审核
            if (mst != null && mst.chkflg == GetY())
            {
                return(RInfo("I0150"));
            }
            //检查明细是否有审核的
            foreach (wms_cangdtl_105 d in arrqrydtl)
            {
                if (d.bokflg == GetY())
                {
                    return(RInfo("I0151"));
                }
            }
            //删除单据明细
            WmsDc.wms_cangdtl_105.DeleteAllOnSubmit(arrqrydtl);
            WmsDc.wms_cang_105.DeleteAllOnSubmit(arrqrymst);
            iDelCangDtl105(arrqrydtl, mst);
            iDelCangMst105(mst);
            //删除主单据
            try
            {
                WmsDc.SubmitChanges();

                return(RSucc("成功", null, "S0082"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0018"));
            }
        }
Ejemplo n.º 20
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"));
            }
        }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        /// <summary>
        /// 盘点单明细修改
        /// </summary>
        /// <param name="wmsno"></param>
        /// <param name="gdsid"></param>
        /// <param name="rcdidx"></param>
        /// <param name="qty"></param>
        /// <returns></returns>
        public ActionResult MdInvCkBllDtl(String wmsno, String gdsid, int rcdidx, double qty)
        {
            //检查单号是否存在
            var qrymst = from e in WmsDc.wms_cang_105
                         where e.wmsno == wmsno &&
                         e.bllid == WMSConst.BLL_TYPE_INVENTORY_CHECK
                         select e;
            var arrqrymst = qrymst.ToArray();
            var qrydtl    = from e in WmsDc.wms_cangdtl_105
                            where e.wmsno == wmsno &&
                            e.gdsid == gdsid && e.rcdidx == rcdidx &&
                            e.bllid == WMSConst.BLL_TYPE_INVENTORY_CHECK
                            select e;
            var arrqrydtl = qrydtl.ToArray();

            //单据是否找到
            if (arrqrymst.Length <= 0)
            {
                return(RNoData("N0092"));
            }
            //检查是否有数据权限
            wms_cang_105 mst = arrqrymst[0];



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

            if (!qus.Contains(mst.qu.Trim()))
            {
                return(RInfo("I0145"));
            }
            //检查单号是否已经审核
            if (mst != null && mst.chkflg == GetY())
            {
                return(RInfo("I0146"));
            }
            if (arrqrydtl.Length <= 0)
            {
                return(RNoData("N0093"));
            }
            wms_cangdtl_105 dtl = arrqrydtl[0];

            //明细如果已经确认就不能修改明细了
            if (dtl.bokflg == GetY())
            {
                return(RInfo("I0147"));
            }
            dtl.qty    = Math.Round(qty, 4, MidpointRounding.AwayFromZero);
            dtl.pkgqty = dtl.qty;
            dtl.preqty = dtl.qty;
            try
            {
                WmsDc.SubmitChanges();
                return(RSucc("成功", null, "S0081"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0017"));
            }
        }
Ejemplo n.º 23
0
        //扣减stkotdtl里面的库存
        /// <summary>
        /// 扣减stkotdtl里面的库存
        /// </summary>
        /// <param name="stkotdtl">明细</param>
        /// <param name="diffQty">差异数</param>
        protected void RedcStkotQty(stkotdtl[] stkotdtl, double diffQty)
        {
            double diff = diffQty;

            if (diffQty == 0)
            {
                return;
            }

            //减小数部分
            #region 减小数部分
            foreach (stkotdtl d in stkotdtl)
            {
                if (diffQty == 0)
                {
                    break;
                }
                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);
                }
            }
            #endregion 减小数部分
            //减去零散件规
            #region 减去零散件规
            wms_pkg[] lsPkg = (from e in WmsDc.wms_pkg
                               where stkotdtl.Select(ee => ee.gdsid.Trim()).Contains(e.gdsid)
                               select e).ToArray();
            foreach (stkotdtl d in stkotdtl)
            {
                if (diffQty == 0)
                {
                    break;
                }

                if (d.preqty == null)
                {
                    d.preqty = d.qty;
                }
                double xtmp = (double)lsPkg.Where(e => e.gdsid.Trim() == d.gdsid).Select(e => Convert.ToDecimal(d.qty) % Convert.ToDecimal(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);
                }
            }
            #endregion 减去零散件规
            //减去从大到小的数量
            #region 减去从大到小的数量
            foreach (stkotdtl d in stkotdtl)
            {
                if (diffQty == 0)
                {
                    break;
                }
                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 减去从大到小的数量
        }
Ejemplo n.º 24
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"));
        }
Ejemplo n.º 25
0
        public ActionResult AdPrftOLss(String wmsno, String barcode, String gdsid, String gdstype, String bthno, String vlddat, double qty, String rsn)
        {
            //检查单号是否存在
            var qrymst = from e in WmsDc.wms_cang_111
                         where e.wmsno == wmsno &&
                         e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS &&
                         qus.Contains(e.qu.Trim())
                         select e;
            var arrqrymst = qrymst.ToArray();
            var qrydtl    = from e in WmsDc.wms_cangdtl_111
                            where e.wmsno == wmsno &&
                            e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS
                            orderby e.rcdidx descending
                            select e;
            var arrqrydtl = qrydtl.ToArray();

            //单据是否找到
            if (arrqrymst.Length <= 0)
            {
                return(RNoData("N0118"));
            }
            //判断分区是否有效
            if (!IsExistBarcode(barcode))
            {
                return(RInfo("I0204", barcode.Trim()));
            }

            //检查是否有数据权限
            wms_cang_111 mst = arrqrymst[0];


            wms_cangdtl_111 dtl = new wms_cangdtl_111();

            dtl.wmsno   = wmsno;
            dtl.bllid   = WMSConst.BLL_TYPE_PROFITORLOSS;
            dtl.rcdidx  = arrqrydtl[0].rcdidx + 1;
            dtl.barcode = barcode;
            dtl.gdsid   = gdsid;
            dtl.gdstype = gdstype;
            dtl.pkgid   = "01";
            double fQty = Math.Round(qty, 4, MidpointRounding.AwayFromZero);

            dtl.qty     = fQty;
            dtl.preqty  = fQty;
            dtl.pkgqty  = fQty;
            dtl.gdstype = gdstype;
            dtl.bthno   = string.IsNullOrEmpty(bthno) ? "1" : bthno;
            dtl.vlddat  = string.IsNullOrEmpty(vlddat) ? GetCurrentDay() : vlddat;
            JsonResult    jr = (JsonResult)GetBcdByGdsid(gdsid);
            ResultMessage rm = (ResultMessage)jr.Data;

            if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
            {
                return(RInfo("I0214", gdsid));
            }
            bcd[] b = (bcd[])rm.ResultObject;
            dtl.bcd    = b[0].bcd1;
            dtl.bkr    = "";
            dtl.bokflg = GetN();
            dtl.bokdat = GetCurrentDate();
            dtl.brfdtl = rsn.ToString();

            WmsDc.wms_cangdtl_111.InsertOnSubmit(dtl);

            //正在生成拣货单,请稍候重试
            if (mst.times.Trim() == "-")
            {
                string quRetrv = mst.qu;
                if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                {
                    return(RInfo("I0205"));
                }
            }

            if (!qus.Contains(mst.qu))
            {
                return(RInfo("I0206"));
            }

            //检查单号是否已经审核
            if (mst != null && mst.chkflg == GetY())
            {
                return(RInfo("I0207"));
            }
            //是否是本人制单
            if (!IsSameLogin(mst.mkr))
            {
                return(RInfo("I0208"));
            }
            //判断商品是否已经再单据里面
            int iHasIn = qrydtl.Where(e => e.gdsid == gdsid && e.gdstype == gdstype && e.barcode == barcode && e.bthno == dtl.bthno.Trim() && e.vlddat == dtl.vlddat.Trim()).Count();

            if (iHasIn > 0)
            {
                return(RInfo("I0209", gdsid));
            }
            //如果是报损,判断是否有库存
            if (mst.times.Trim() == "-")
            {
                if (rsn.Trim() == "")
                {
                    return(RInfo("I0210", gdsid));
                }

                //如果是报损,判断是否有库存
                //得到一个商品的库存数量
                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 (Math.Abs(qty) > Math.Abs(ktqty))
                {
                    return(RInfo("I0211", qty, ktqty));
                }
                //return RInfo( "I0212",gdsid ,barcode  );
            }



            //判断gdsid和barcode是不是在一个区
            String[] qu = GetQuByGdsid(gdsid, LoginInfo.DefStoreid);
            if (!qu.Contains(barcode.Substring(0, 2)))
            {
                return(RInfo("I0213", gdsid, String.Join(",", qu)));
            }



            try
            {
                WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0207"));
                }
                WmsDc.SubmitChanges();

                //修改主单时间戳
                string sql  = @"update wms_cang_111 set bllid='111' where wmsno='" + mst.wmsno + "' and bllid='111' and udtdtm={0}";
                int    iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm);
                if (iEff == 0)
                {
                    return(RInfo("I0207"));
                }

                return(RSucc("成功", dtl, "S0103"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0026"));
            }
        }
Ejemplo n.º 26
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"));
                }
            }
        }
Ejemplo n.º 27
0
        public ActionResult MdPrftOLssBll(String wmsno, String barcodes, String gdsids, String gdstypes, String bthnos, String vlddats, String qtys, String rsns)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //拆分参数
                //检查并创建明细
                JsonResult    jr = (JsonResult)_MakeParam(wmsno, barcodes, gdsids, gdstypes, bthnos, vlddats, qtys, rsns);
                ResultMessage rm = (ResultMessage)jr.Data;
                if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                {
                    return(jr);
                }

                //检查单号是否存在
                var qrymst = from e in WmsDc.wms_cang_111
                             where e.wmsno == wmsno &&
                             e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS &&
                             qus.Contains(e.qu.Trim())
                             select e;
                var arrqrymst = qrymst.ToArray();
                var qrydtl    = from e in WmsDc.wms_cangdtl_111
                                where e.wmsno == wmsno &&
                                e.bllid == WMSConst.BLL_TYPE_PROFITORLOSS
                                select e;
                var arrqrydtl = qrydtl.ToArray();
                //单据是否找到
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0119"));
                }
                //检查是否有数据权限
                wms_cang_111 mst = arrqrymst[0];
                //正在生成拣货单,请稍候重试
                if (mst.times.Trim() == "-")
                {
                    string quRetrv = mst.qu;
                    if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                    {
                        return(RInfo("I0215"));
                    }
                }

                if (!qus.Contains(mst.qu.Trim()))
                {
                    return(RInfo("I0216"));
                }
                //检查单号是否已经审核
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0217"));
                }

                //是否是本人制单
                if (!IsSameLogin(mst.mkr))
                {
                    return(RInfo("I0218"));
                }

                wms_cangdtl_111[] newdtl = (wms_cangdtl_111[])rm.ResultObject;
                int i = 0;

                if (mst.times.Trim() == "-")
                {
                    //如果是报损,判断是否有库存
                    foreach (wms_cangdtl_111 d in newdtl)
                    {
                        if (d.brfdtl.Trim() == "")
                        {
                            return(RInfo("I0219", d.gdsid));
                        }

                        //得到一个商品的库存数量
                        GdsInBarcode[] gb = GetAGdsQtyInBarcode(arrqrydtl[i].barcode, arrqrydtl[i].gdsid, arrqrydtl[i].gdstype)
                                            .Where(e => e.vlddat == arrqrydtl[i].vlddat.Trim() && e.bthno == arrqrydtl[i].bthno.Trim())
                                            .ToArray();
                        double bqty  = (gb == null || gb.Length <= 0) ? 0 : gb[0].sqty;
                        double ktqty = Math.Abs(bqty) + Math.Abs(arrqrydtl[i].qty);  //可调数量 = 库存数量+本单该商品的数量
                        //如果 需调整数量 > 可调数量
                        if (Math.Abs(d.qty) > Math.Abs(ktqty))
                        {
                            return(RInfo("I0220", d.qty, ktqty));
                        }
                        i++;
                    }
                }


                //删除单据明细
                WmsDc.wms_cangdtl_111.DeleteAllOnSubmit(arrqrydtl);
                iDelCangDtl111(arrqrydtl, mst);
                //增加单据明细
                WmsDc.wms_cangdtl_111.InsertAllOnSubmit(newdtl);
                try
                {
                    WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                    //检查单号是否已经审核
                    if (mst != null && mst.chkflg == GetY())
                    {
                        return(RInfo("I0207"));
                    }

                    WmsDc.SubmitChanges();

                    //修改主单时间戳
                    string sql  = @"update wms_cang_111 set bllid='111' where wmsno='" + mst.wmsno + "' and bllid='111' and udtdtm={0}";
                    int    iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm);
                    if (iEff == 0)
                    {
                        return(RInfo("I0207"));
                    }


                    scop.Complete();
                    return(RSucc("成功", newdtl, "S0104"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0027"));
                }
            }
        }
Ejemplo n.º 28
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"));
                }
            }
        }
Ejemplo n.º 29
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 老的播种逻辑
        }
Ejemplo n.º 30
0
        public ActionResult InstInvCkBll(String wmsno, String barcodes, String gdsids, String gdstypes, String bthnos, String vlddats, String qtys)
        {
            //拆分参数
            //检查并创建明细
            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_105
                         where e.wmsno == wmsno &&
                         e.bllid == WMSConst.BLL_TYPE_INVENTORY_CHECK &&
                         e.times == "2"
                         select e;
            var arrqrymst = qrymst.ToArray();
            var qrydtl    = from e in WmsDc.wms_cangdtl_105
                            where e.wmsno == wmsno &&
                            e.bllid == WMSConst.BLL_TYPE_INVENTORY_CHECK
                            select e;
            var arrqrydtl = qrydtl.ToArray();

            //单据是否找到
            if (arrqrymst.Length <= 0)
            {
                return(RNoData("N0095"));
            }
            //检查是否有数据权限
            wms_cang_105 mst = arrqrymst[0];

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


            if (!qus.Contains(mst.qu.Trim()))
            {
                return(RInfo("I0153"));
            }
            //检查单号是否已经审核
            if (mst != null && mst.chkflg == GetY())
            {
                return(RInfo("I0154"));
            }
            //删除单据明细
            //WmsDc.wms_cangdtl_105.DeleteAllOnSubmit(arrqrydtl);

            //增加单据明细
            wms_cangdtl_105[] newdtl = (wms_cangdtl_105[])rm.ResultObject;

            //判断newdtl里面有没有重复录入的数据
            var qrygrp    = newdtl.GroupBy(e => new { e.barcode, e.gdsid, e.gdstype }).Where(e => e.Count() > 1);
            var arrqrygrp = qrygrp.Select(e => e.Key).ToArray();

            if (arrqrygrp.Length > 0)
            {
                var g = arrqrygrp[0];
                return(RInfo("I0155", g.gdsid, g.gdstype));
            }

            //检查是否已经盘过点了
            foreach (wms_cangdtl_105 d in newdtl)
            {
                //判断是否该商品是否在该区
                if (!dtqus.Contains(mst.qu) && d.gdsid.Trim() != "1")
                {
                    var hasPwrInQu = (from e in WmsDc.wms_set
                                      join e1 in WmsDc.gds on e.val2 equals e1.dptid
                                      where e.setid == "001" && e.val3 == mst.savdptid &&
                                      e1.gdsid == d.gdsid.Trim() && e.val1 == GetQuByBarcode(d.barcode.Trim())
                                      select e.val1.Trim()).FirstOrDefault();
                    if (hasPwrInQu == null || hasPwrInQu != mst.qu)
                    {
                        return(RInfo("I0488"));
                    }
                }

                String boci = GetBociByWmsno(d.wmsno);
                d.oldbarcode = boci;
                if (HasChecked(d))
                {
                    return(RInfo("I0156", d.gdsid, d.gdstype));
                }
                d.oldbarcode = "";
            }

            WmsDc.wms_cangdtl_105.InsertAllOnSubmit(newdtl);
            try
            {
                WmsDc.SubmitChanges();
                return(RSucc("成功", newdtl, "S0083"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0019"));
            }
        }