Example #1
0
        public IHttpActionResult Putsuser(twhstockrecords t)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                if (t.OpeType == "I")
                {
                    db.twhstockrecords.Where(s => s.WHID == t.WHID && s.PdtID == t.PdtID && s.UpdateDate == t.UpdateDate && s.PurOrderNO == t.PurOrderNO)
                    .Update(p => new twhstockrecords {
                        Remark = t.Remark
                    });
                }
                else
                {
                    db.twhstockrecords.Where(s => s.WHID == t.WHID && s.PdtID == t.PdtID && s.UpdateDate == t.UpdateDate && s.SaleOrderNO == t.SaleOrderNO)
                    .Update(p => new twhstockrecords {
                        Remark = t.Remark
                    });
                }

                db.SaveChanges();
            }
            catch (Exception ex)
            {
                return(new PageResult(ex.ToString(), Request));
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Example #2
0
        public IHttpActionResult StockTransfer()
        {
            HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];
            HttpRequestBase request = context.Request;

            JavaScriptSerializer js         = new JavaScriptSerializer();
            string frmWarId                 = request.Params["frmWarId"];
            string toWarId                  = request.Params["toWarId"];
            string purchaseDate             = request.Params["purchaseDate"];
            List <Stockrecords>    listStoc = js.Deserialize <List <Stockrecords> >(request.Params["tsfDtl"]);
            List <twhstockrecords> listTwh  = new List <twhstockrecords>();

            using (var tran = db.Database.BeginTransaction())
            {
                try
                {
                    //调整库存前先锁住两个库的对应所有产品的行,如果产品在目标库不存在,先新建记录再锁住
                    string sqlQuery = "select * from twhinventory where whid ='{0}' and areaid ='0' and posiid='0' and pdtid='{1}' for update";
                    for (int i = 0; i < listStoc.Count; i++)
                    {
                        string sql1 = string.Format(sqlQuery, frmWarId, listStoc[i].pdtID);
                        string sql2 = string.Format(sqlQuery, toWarId, listStoc[i].pdtID);

                        var inv1 = db.twhinventory.SqlQuery(sql1).FirstOrDefault();
                        if (inv1 == null || inv1.PdtID == null || inv1.PdtID == "")
                        {
                            twhinventory newInv1 = new twhinventory();
                            newInv1.WHID   = frmWarId;
                            newInv1.PdtID  = listStoc[i].pdtID;
                            newInv1.AreaID = "0";
                            newInv1.PosiID = "0";
                            newInv1.InvNum = 0;
                            db.twhinventory.Add(newInv1);
                            db.SaveChanges();
                            inv1 = db.twhinventory.SqlQuery(sql1).FirstOrDefault();
                        }
                        //实时库存不够,回滚,返回
                        if (inv1.InvNum < listStoc[i].lftNum)
                        {
                            tran.Rollback();
                            return(new PageResult("库存不足", Request));
                        }

                        //来源库减库存
                        inv1.InvNum = inv1.InvNum - listStoc[i].lftNum;

                        var inv2 = db.twhinventory.SqlQuery(sql2).FirstOrDefault();
                        if (inv2 == null || inv2.PdtID == null || inv2.PdtID == "")
                        {
                            twhinventory newInv2 = new twhinventory();
                            newInv2.WHID   = toWarId;
                            newInv2.PdtID  = listStoc[i].pdtID;
                            newInv2.AreaID = "0";
                            newInv2.PosiID = "0";
                            newInv2.InvNum = 0;
                            db.twhinventory.Add(newInv2);
                            db.SaveChanges();

                            inv2 = db.twhinventory.SqlQuery(sql2).FirstOrDefault();
                        }

                        //目标库加库存
                        inv2.InvNum = inv2.InvNum + listStoc[i].lftNum;

                        //新增出入库记录,移库新增两条
                        //新增出库记录
                        float           lftNum = listStoc[i].lftNum;
                        twhstockrecords t      = new twhstockrecords();
                        t.WHID        = frmWarId;
                        t.AreaID      = "0";
                        t.PosiID      = "0";
                        t.PdtID       = listStoc[i].pdtID;
                        t.Num         = lftNum;
                        t.RefWHID     = toWarId;
                        t.RefAreaID   = "0";
                        t.RefPosiID   = "0";
                        t.OpeType     = "TO";
                        t.SaleOrderNO = "";
                        t.No          = "";
                        var dateNow = DateTime.Now;
                        t.CreateDate = dateNow;
                        t.UpdateDate = dateNow;
                        if (!string.IsNullOrEmpty(purchaseDate))
                        {
                            DateTime date = Convert.ToDateTime(purchaseDate);
                            var      tmp0 = date.ToString("yyyy-MM-dd");
                            var      tmp1 = dateNow.ToLongTimeString().ToString();
                            purchaseDate = tmp0 + " " + tmp1;
                            date         = Convert.ToDateTime(purchaseDate);
                            t.UpdateDate = date;
                        }
                        listTwh.Add(t);

                        //新增入库记录
                        twhstockrecords t2 = new twhstockrecords();
                        t2.WHID        = toWarId;
                        t2.AreaID      = "0";
                        t2.PosiID      = "0";
                        t2.PdtID       = listStoc[i].pdtID;
                        t2.Num         = lftNum;
                        t2.RefWHID     = frmWarId;
                        t2.RefAreaID   = "0";
                        t2.RefPosiID   = "0";
                        t2.OpeType     = "TI";
                        t2.SaleOrderNO = "";
                        t2.No          = "";
                        t2.CreateDate  = dateNow;
                        t2.UpdateDate  = dateNow;
                        if (!string.IsNullOrEmpty(purchaseDate))
                        {
                            DateTime date = Convert.ToDateTime(purchaseDate);
                            var      tmp0 = date.ToString("yyyy-MM-dd");
                            var      tmp1 = dateNow.ToLongTimeString().ToString();
                            purchaseDate  = tmp0 + " " + tmp1;
                            date          = Convert.ToDateTime(purchaseDate);
                            t2.UpdateDate = date;
                        }
                        listTwh.Add(t2);
                    }

                    db.twhstockrecords.AddRange(listTwh);

                    db.SaveChanges();
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    return(new PageResult(ex.ToString(), Request));
                }
            }
            return(Content <string>(HttpStatusCode.OK, "OK"));
        }
Example #3
0
        public IHttpActionResult PostInWar()
        {
            HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];
            HttpRequestBase request = context.Request;

            JavaScriptSerializer js          = new JavaScriptSerializer();
            string purOrderNO                = request.Params["purOrderNO"];
            string warId                     = request.Params["warId"];
            string purchaseDate              = request.Params["purchaseDate"];
            List <Stockrecords>     listStoc = js.Deserialize <List <Stockrecords> >(request.Params["purorderdtl"]);
            List <WarehouseReceipt> listWr   = js.Deserialize <List <WarehouseReceipt> >(request.Params["purorderdtl"]);
            List <twhstockrecords>  listTwh  = new List <twhstockrecords>();
            string no = "";

            using (var tran = db.Database.BeginTransaction())
            {
                try
                {
                    int fNum = 0;
                    no = purOrderNO + DateTime.Now.ToString("HHmmss");
                    for (int i = 0; i < listStoc.Count; i++)
                    {
                        int    seqNo  = listStoc[i].seqNo;
                        string pdtId  = listStoc[i].pdtID;
                        float  lftNum = listStoc[i].lftNum;
                        string remark = listStoc[i].remark;

                        twhstockrecords t = new twhstockrecords();
                        t.WHID       = warId;
                        t.AreaID     = i.ToString();
                        t.PosiID     = i.ToString();
                        t.PdtID      = pdtId;
                        t.Num        = lftNum;
                        t.RefWHID    = i.ToString();
                        t.RefAreaID  = i.ToString();
                        t.RefPosiID  = i.ToString();
                        t.OpeType    = "I";
                        t.PurOrderNO = purOrderNO;
                        t.RefSeqNo   = seqNo;
                        t.No         = no;
                        var dateNow = DateTime.Now;
                        t.CreateDate = dateNow;
                        t.UpdateDate = dateNow;
                        if (!string.IsNullOrEmpty(purchaseDate))
                        {
                            DateTime date = Convert.ToDateTime(purchaseDate);
                            var      tmp0 = date.ToString("yyyy-MM-dd");
                            var      tmp1 = dateNow.ToLongTimeString().ToString();
                            purchaseDate = tmp0 + " " + tmp1;
                            date         = Convert.ToDateTime(purchaseDate);
                            t.UpdateDate = date;
                        }
                        t.Remark = remark;
                        listTwh.Add(t);

                        var purorderdtl = db.tpurorderdtl
                                          .Where(p => p.PurOrderNO == purOrderNO && p.PdtID == pdtId && p.SeqNo == seqNo).FirstOrDefault();

                        if (purorderdtl.LftNum > 0)
                        {
                            float num    = (float)purorderdtl.LftNum - lftNum;
                            float delNum = (float)purorderdtl.OrderNum - num;
                            db.tpurorderdtl.Where(p => p.PurOrderNO == purOrderNO && p.PdtID == pdtId && p.SeqNo == seqNo)
                            .Update(p => new tpurorderdtl {
                                LftNum = num, DelNum = delNum, UpdateDate = DateTime.Now
                            });

                            if (num == 0)
                            {
                                purorderdtl.State = "F";
                            }
                            else
                            {
                                fNum++;
                            }
                        }
                    }

                    var repeat = listStoc.GroupBy(s => s.pdtID).Select(s => new
                    {
                        pdtID  = s.Key,
                        lftNum = s.Sum(a => a.lftNum)
                    });

                    foreach (var r in repeat)
                    {
                        if (twhinventoryExists(warId, r.pdtID))
                        {
                            //var repeatUpdate = listStoc.GroupBy(s => s.pdtID).Select(s => new
                            //{
                            //    pdtID = s.Key,
                            //    lftNum = s.Sum(a => a.lftNum)
                            //}).Where(s => s.pdtID == r.pdtID).FirstOrDefault();

                            //float lftNum = repeatUpdate.lftNum;

                            var   inventory = db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == r.pdtID).FirstOrDefault();
                            float total     = (float)inventory.InvNum + r.lftNum;
                            db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == r.pdtID)
                            .Update(inv => new twhinventory()
                            {
                                InvNum = total, UpdateDate = DateTime.Now
                            });
                        }
                        else
                        {
                            //var query = listStoc.GroupBy(x => x.pdtID).Where(g => g.Count() > 1 && g.Key == pdtId).Select(y => y.Key).ToList();

                            //if (query.Count > 0) lftNum = 0;

                            //var repeatAdd = listStoc.GroupBy(s => s.pdtID).Select(s => new
                            //{
                            //    pdtID = s.Key,
                            //    lftNum = s.Sum(a => a.lftNum)
                            //}).Where(s => s.pdtID == r.pdtID).FirstOrDefault();

                            //float lftNum = repeatAdd.lftNum;

                            twhinventory inv = new twhinventory();
                            inv.WHID       = warId;
                            inv.AreaID     = "0";
                            inv.PosiID     = "0";
                            inv.PdtID      = r.pdtID;
                            inv.InvNum     = r.lftNum;
                            inv.UpdateDate = DateTime.Now;
                            db.twhinventory.Add(inv);
                        }
                    }

                    //部分入库时fNum也会是0,这种情况下用fNum判断会有问题
                    //if (fNum == 0)
                    //{
                    //    db.tpurorder.Where(p => p.PurOrderNO == purOrderNO)
                    //        .Update(p => new tpurorder() { State = "F", UpdateDate = DateTime.Now });
                    //}

                    //全部入库完成后才修改单头状态为F
                    db.SaveChanges();
                    var isNotFinish = db.tpurorderdtl.AsNoTracking().Any(w => w.PurOrderNO == purOrderNO && (w.State == "N" || w.State == null));
                    if (!isNotFinish)
                    {
                        db.tpurorder.Where(s => s.PurOrderNO == purOrderNO)
                        .Update(p => new tpurorder()
                        {
                            State = "F", UpdateDate = DateTime.Now
                        });
                    }

                    db.twhstockrecords.AddRange(listTwh);


                    db.SaveChanges();
                    tran.Commit();

                    excelHelper.SaveInWarInfo(purOrderNO, warId, purchaseDate, listWr, no);
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    return(new PageResult(ex.ToString(), Request));
                }
            }
            return(Content <string>(HttpStatusCode.OK, "OK"));
        }
Example #4
0
        public IHttpActionResult PostOutWar()
        {
            HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];
            HttpRequestBase request = context.Request;

            JavaScriptSerializer js         = new JavaScriptSerializer();
            string saleOrderNo              = request.Params["saleOrderNo"];
            string warId                    = request.Params["warId"];
            string deliveryDate             = request.Params["deliveryDate"];
            List <Stockrecords>    listStoc = js.Deserialize <List <Stockrecords> >(request.Params["salorderdtl"]);
            List <OutboundOrder>   listOdo  = js.Deserialize <List <OutboundOrder> >(request.Params["salorderdtl"]);
            List <twhstockrecords> listTwh  = new List <twhstockrecords>();
            string no = "";

            using (var tran = db.Database.BeginTransaction())
            {
                try
                {
                    var repeat = listStoc.GroupBy(s => s.pdtID).Select(s => new {
                        pdtID  = s.Key,
                        lftNum = s.Sum(a => a.lftNum),
                        invNum = s.Where(a => a.pdtID == s.Key).Select(a => a.invNum).FirstOrDefault()
                    });


                    foreach (var r in repeat)
                    {
                        if (r.lftNum > r.invNum)
                        {
                            return(new PageResult("库存不足", Request));
                        }
                    }

                    no = saleOrderNo + DateTime.Now.ToString("HHmmss");
                    for (int i = 0; i < listStoc.Count; i++)
                    {
                        int    seqNo  = listStoc[i].seqNo;
                        string pdtId  = listStoc[i].pdtID;
                        float  lftNum = listStoc[i].lftNum;
                        string remark = listStoc[i].remark;

                        twhstockrecords t = new twhstockrecords();
                        t.WHID        = warId;
                        t.AreaID      = i.ToString();
                        t.PosiID      = i.ToString();
                        t.PdtID       = pdtId;
                        t.Num         = lftNum;
                        t.RefWHID     = i.ToString();
                        t.RefAreaID   = i.ToString();
                        t.RefPosiID   = i.ToString();
                        t.OpeType     = "O";
                        t.SaleOrderNO = saleOrderNo;
                        t.RefSeqNo    = seqNo;
                        t.No          = no;
                        var dateNow = DateTime.Now;
                        t.CreateDate = dateNow;
                        t.UpdateDate = dateNow;
                        if (!string.IsNullOrEmpty(deliveryDate))
                        {
                            DateTime date = Convert.ToDateTime(deliveryDate);
                            var      tmp0 = date.ToString("yyyy-MM-dd");
                            var      tmp1 = dateNow.ToLongTimeString().ToString();
                            deliveryDate = tmp0 + " " + tmp1;
                            date         = Convert.ToDateTime(deliveryDate);
                            t.UpdateDate = date;
                        }
                        t.Remark = remark;
                        listTwh.Add(t);

                        var tsaleorderdtl = db.tsaleorderdtl
                                            .Where(s => s.SaleOrderNO == saleOrderNo && s.PdtID == pdtId && s.SeqNo == seqNo).FirstOrDefault();

                        if (tsaleorderdtl.LftNum > 0)
                        {
                            float num    = (float)tsaleorderdtl.LftNum - lftNum;
                            float delNum = (float)tsaleorderdtl.OrderNum - num;
                            db.tsaleorderdtl.Where(s => s.SaleOrderNO == saleOrderNo && s.PdtID == pdtId && s.SeqNo == seqNo)
                            .Update(p => new tsaleorderdtl {
                                LftNum = num, DelNum = delNum, UpdateDate = DateTime.Now
                            });

                            if (num <= 0)
                            {
                                tsaleorderdtl.State = "F";
                            }
                        }

                        if (twhinventoryExists(warId, pdtId))
                        {
                            var r = listStoc.GroupBy(s => s.pdtID).Select(s => new
                            {
                                pdtID  = s.Key,
                                lftNum = s.Sum(a => a.lftNum)
                            }).Where(s => s.pdtID == pdtId).FirstOrDefault();

                            lftNum = r.lftNum;

                            var   inventory = db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == pdtId).FirstOrDefault();
                            float total     = (float)inventory.InvNum - lftNum;
                            db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == pdtId)
                            .Update(inv => new twhinventory()
                            {
                                InvNum = total, UpdateDate = DateTime.Now
                            });
                        }
                        //else
                        //{
                        //    twhinventory inv = new twhinventory();
                        //    inv.WHID = warId;
                        //    inv.AreaID = i.ToString();
                        //    inv.PosiID = i.ToString();
                        //    inv.PdtID = pdtId;
                        //    inv.InvNum = lftNum;
                        //    inv.UpdateDate = DateTime.Now;
                        //    db.twhinventory.Add(inv);
                        //}
                    }

                    db.SaveChanges();
                    var isNotFinish = db.tsaleorderdtl.AsNoTracking().Any(w => w.SaleOrderNO == saleOrderNo && (w.State == "N" || w.State == null));
                    if (!isNotFinish)
                    {
                        db.tsaleorder.Where(s => s.SaleOrderNO == saleOrderNo)
                        .Update(p => new tsaleorder()
                        {
                            State = "F", UpdateDate = DateTime.Now
                        });
                    }

                    db.twhstockrecords.AddRange(listTwh);

                    db.SaveChanges();
                    tran.Commit();

                    excelHelper.SaveOutWarInfo(saleOrderNo, warId, deliveryDate, listOdo, no);
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    return(new PageResult(ex.ToString(), Request));
                }
            }
            return(Content <string>(HttpStatusCode.OK, "OK"));
        }
Example #5
0
        /// <summary>
        /// 取消采购清单入库
        /// 采购订单数量状态恢复,出入库记录标记为”C,取消“,没有的话加个列, 库存数量恢复。
        /// </summary>
        /// <param name="purOrderNo"></param>
        /// <returns></returns>
        public int CancelPurOrderStockIn(string purOrderNo, string userID, string NegativeInventory, out string errPdtID, out string errWHID)
        {
            int ret = 0;

            errPdtID = "";
            errWHID  = "";
            using (var tran = erpsEntities.Database.BeginTransaction())
            {
                try
                {
                    // 1 修改订单明表内容
                    var purOrder = erpsEntities.tpurorder.AsNoTracking().Where(x => x.PurOrderNO.Equals(purOrderNo)).ToList();
                    if (purOrder.Count < 1)
                    {
                        return(ret);
                    }
                    var purodr = purOrder.FirstOrDefault <tpurorder>();
                    purodr.State = "N";
                    //purodr.UpdateID = userID;
                    //purodr.UpdateDate = DateTime.Now;
                    //erpsEntities.tpurorder.Attach(purodr);
                    erpsEntities.Entry(purodr).State = EntityState.Unchanged;
                    erpsEntities.Entry(purodr).Property(x => x.State).IsModified = true;

                    // 修改订单明细内容
                    var purodrdtls = erpsEntities.tpurorderdtl.AsNoTracking().Where(x => x.PurOrderNO.Equals(purOrderNo)).ToList();
                    for (int i = 0; i < purodrdtls.Count; i++)
                    {
                        purodrdtls[i].DelNum = 0;
                        purodrdtls[i].LftNum = purodrdtls[i].OrderNum;
                        purodrdtls[i].State  = "N";
                        //erpsEntities.tpurorderdtl.Attach(purodrdtls[i]);
                        //purodrdtls[i].UpdateDate = DateTime.Now;
                        erpsEntities.Entry(purodrdtls[i]).State = EntityState.Unchanged;
                        erpsEntities.Entry(purodrdtls[i]).Property(x => x.DelNum).IsModified = true;
                        erpsEntities.Entry(purodrdtls[i]).Property(x => x.LftNum).IsModified = true;
                        erpsEntities.Entry(purodrdtls[i]).Property(x => x.State).IsModified  = true;
                    }

                    string whid      = "";
                    string pdtid     = "";
                    float  invNum    = 0;
                    var    date      = DateTime.Now;
                    var    stockrcds = erpsEntities.twhstockrecords.AsNoTracking().Where(w => w.PurOrderNO.Equals(purOrderNo) && w.State != "C").ToList();
                    for (int i = 0; i < stockrcds.Count; i++)
                    {
                        whid  = stockrcds[i].WHID;
                        pdtid = stockrcds[i].PdtID;
                        // 1 修改出入库记录表
                        stockrcds[i].State      = "C"; //状态
                        stockrcds[i].UpdateDate = date;
                        //stockrcds[i].UpdateID = userID;
                        erpsEntities.Entry(stockrcds[i]).State = EntityState.Unchanged;
                        erpsEntities.Entry(stockrcds[i]).Property(x => x.State).IsModified      = true;
                        erpsEntities.Entry(stockrcds[i]).Property(x => x.UpdateDate).IsModified = true;
                        //erpsEntities.Entry(stockrcds[i]).Property(x => x.UpdateID).IsModified = true;

                        // 2, 修改库存表
                        //var invrcds = erpsEntities.twhinventory.Where(w => w.WHID.Equals(whid) && w.PdtID.Equals(pdtid)).AsNoTracking().ToList();
                        //if (invrcds.Count > 0)
                        //{
                        //    var invrcd = invrcds.FirstOrDefault<twhinventory>();
                        //    invrcd.InvNum = invrcd.InvNum - stockrcds[i].Num;
                        //    erpsEntities.Entry(invrcd).State = EntityState.Unchanged;
                        //    erpsEntities.Entry(invrcd).Property(x => x.InvNum).IsModified = true;
                        //}
                        twhstockrecords tmpstockrcds = new twhstockrecords();
                        tmpstockrcds.AreaID      = stockrcds[i].AreaID;
                        tmpstockrcds.No          = stockrcds[i].No;
                        tmpstockrcds.Num         = stockrcds[i].Num;
                        tmpstockrcds.PdtID       = stockrcds[i].PdtID;
                        tmpstockrcds.PosiID      = stockrcds[i].PosiID;
                        tmpstockrcds.PurOrderNO  = stockrcds[i].PurOrderNO;
                        tmpstockrcds.RefAreaID   = stockrcds[i].RefAreaID;
                        tmpstockrcds.RefPosiID   = stockrcds[i].RefPosiID;
                        tmpstockrcds.RefSeqNo    = stockrcds[i].RefSeqNo;
                        tmpstockrcds.RefWHID     = stockrcds[i].RefWHID;
                        tmpstockrcds.Remark      = stockrcds[i].Remark;
                        tmpstockrcds.SaleOrderNO = stockrcds[i].SaleOrderNO;
                        tmpstockrcds.WHID        = stockrcds[i].WHID;
                        tmpstockrcds.State       = "C";
                        tmpstockrcds.OpeType     = "IC";
                        tmpstockrcds.CreateDate  = date;
                        tmpstockrcds.UpdateID    = userID;
                        tmpstockrcds.UpdateDate  = date;
                        erpsEntities.twhstockrecords.Add(tmpstockrcds);
                    }

                    //var stockrcdsGroupByWhIDPdtID = erpsEntities.twhstockrecords.Where(w => w.PurOrderNO.Equals(purOrderNo) && w.State != "C")
                    //    .GroupBy(a => new { a.WHID, a.PdtID }).Select(g => new { InvKey = g.Key, InvNum = g.Sum(itm => itm.Num) }).ToList();
                    var stockrcdsGroupByWhIDPdtID = (from a in erpsEntities.twhstockrecords
                                                     where a.PurOrderNO == purOrderNo && a.State != "C"
                                                     group a by new { a.WHID, a.PdtID } into gg
                                                     select new
                    {
                        WHID = gg.Key.WHID,
                        PdtID = gg.Key.PdtID,
                        InvNum = gg.Sum(c => c.Num)
                    }).AsNoTracking().ToList();

                    for (int i = 0; i < stockrcdsGroupByWhIDPdtID.Count; i++)
                    {
                        whid   = stockrcdsGroupByWhIDPdtID[i].WHID;
                        pdtid  = stockrcdsGroupByWhIDPdtID[i].PdtID;
                        invNum = stockrcdsGroupByWhIDPdtID[i].InvNum.Value;

                        // 2, 修改库存表
                        var invrcds = erpsEntities.twhinventory.Where(w => w.WHID.Equals(whid) && w.PdtID.Equals(pdtid)).AsNoTracking().ToList();
                        if (invrcds.Count > 0)
                        {
                            var invrcd = invrcds.FirstOrDefault <twhinventory>();
                            invrcd.InvNum = invrcd.InvNum - invNum;
                            if (invrcd.InvNum < 0 && NegativeInventory != "Y")
                            {
                                ret      = -9;
                                errPdtID = pdtid;
                                errWHID  = whid;
                                break;
                            }
                            erpsEntities.Entry(invrcd).State = EntityState.Unchanged;
                            erpsEntities.Entry(invrcd).Property(x => x.InvNum).IsModified = true;
                        }
                    }

                    if (ret == -9)
                    {
                        tran.Rollback();
                    }
                    else
                    {
                        ret = erpsEntities.SaveChanges();
                        tran.Commit();
                        if (ret > 0)
                        {
                            ret = 1;
                        }
                    }
                    return(ret);
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    ret = -1;
                    throw ex;
                }
            }
        }
Example #6
0
        public IHttpActionResult Posttwhcheckrecords()
        {
            HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];
            HttpRequestBase request = context.Request;

            JavaScriptSerializer js = new JavaScriptSerializer();

            string chkNO    = request.Params["chkNO"];
            string warId    = request.Params["warId"];
            string chkDate  = request.Params["chkDate"];
            string remark   = request.Params["remark"];
            string updateId = request.Params["updateId"];
            List <twhcheckrecorddtl> listTwhDtl = js.Deserialize <List <twhcheckrecorddtl> >(request.Params["listTwhDtl"]);
            List <twhstockrecords>   listStock  = new List <twhstockrecords>();

            using (var tran = db.Database.BeginTransaction())
            {
                try
                {
                    if (twhcheckrecordsExists(chkNO))
                    {
                        db.twhcheckrecords.Where(c => c.ChkNO == chkNO)
                        .Update(c => new twhcheckrecords
                        {
                            ChkStatus  = "F",
                            UpdateID   = updateId,
                            Remark     = remark,
                            UpdateDate = DateTime.Now
                        });
                    }
                    else
                    {
                        twhcheckrecords t = new twhcheckrecords();
                        t.ChkNO      = chkNO;
                        t.WHID       = warId;
                        t.ChkDate    = DateTime.Parse(chkDate);
                        t.Remark     = remark;
                        t.ChkStatus  = "F";
                        t.AreaID     = "1";
                        t.PosiID     = "1";
                        t.UpdateID   = updateId;
                        t.UpdateDate = DateTime.Parse(chkDate);
                        db.twhcheckrecords.Add(t);
                    }

                    for (int i = 0; i < listTwhDtl.Count; i++)
                    {
                        string ChkNO   = listTwhDtl[i].ChkNO = chkNO;
                        string PdtID   = listTwhDtl[i].PdtID;
                        float  InvNum  = listTwhDtl[i].InvNum;
                        float  RealNum = listTwhDtl[i].RealNum;
                        float  DifNum  = listTwhDtl[i].DifNum;

                        twhstockrecords stockrecords = new twhstockrecords();
                        stockrecords.WHID      = warId;
                        stockrecords.AreaID    = "1";
                        stockrecords.PosiID    = "1";
                        stockrecords.PdtID     = listTwhDtl[i].PdtID;
                        stockrecords.RefWHID   = warId;
                        stockrecords.RefAreaID = "1";
                        stockrecords.RefPosiID = "1";
                        stockrecords.UpdateID  = updateId;
                        var date = DateTime.Now;
                        stockrecords.UpdateDate = date;
                        stockrecords.CreateDate = date;

                        //调整库存前先锁住行
                        //string sqlQuery = "select * from twhinventory where whid ='" + warId + "' and pdtid='" + PdtID + "' for update";
                        //var inventory = db.twhinventory.SqlQuery(sqlQuery).FirstOrDefault();
                        var   inventory = db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == PdtID).FirstOrDefault();
                        float invNum    = (float)inventory.InvNum;

                        if (listTwhDtl[i].DifNum == 0)
                        {
                            break;
                        }
                        if (listTwhDtl[i].DifNum > 0)
                        {
                            stockrecords.Num     = listTwhDtl[i].DifNum;
                            stockrecords.OpeType = "Y";
                            db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == PdtID)
                            .Update(inv => new twhinventory {
                                InvNum = RealNum
                            });
                        }
                        else
                        {
                            stockrecords.Num     = Math.Abs(listTwhDtl[i].DifNum);
                            stockrecords.OpeType = "K";
                            db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == PdtID)
                            .Update(inv => new twhinventory {
                                InvNum = RealNum
                            });
                        }

                        if (twhcheckrecorddtlExists(ChkNO, PdtID))
                        {
                            db.twhcheckrecorddtl.Where(c => c.ChkNO == ChkNO && c.PdtID == PdtID)
                            .Update(c => new twhcheckrecorddtl
                            {
                                InvNum     = InvNum,
                                RealNum    = RealNum,
                                DifNum     = DifNum,
                                UpdateID   = updateId,
                                UpdateDate = DateTime.Now,
                                AdjStatus  = "F"
                            });
                        }
                        else
                        {
                            twhcheckrecorddtl tw = new twhcheckrecorddtl();
                            listTwhDtl[i].ChkNO     = chkNO;
                            listTwhDtl[i].AdjStatus = "F";
                            listTwhDtl[i].UpdateID  = updateId;
                            tw = listTwhDtl[i];
                            db.twhcheckrecorddtl.Add(tw);
                        }
                        listStock.Add(stockrecords);
                    }
                    db.twhstockrecords.AddRange(listStock);

                    db.SaveChanges();
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    return(new PageResult("error", Request));
                }
            }
            return(Content <string>(HttpStatusCode.OK, "OK"));
        }
Example #7
0
        /// <summary>
        /// 取消销售订单出库
        /// 销售订单数量状态恢复,出入库记录标记为”C,取消“,没有的话加个列, 库存数量恢复。
        /// </summary>
        /// <param name="saleOrderNo"></param>
        /// <returns></returns>
        public int CancelPurOrderStockIn(string saleOrderNo, string userID)
        {
            int ret = 0;

            using (var tran = erpsEntities.Database.BeginTransaction())
            {
                try
                {
                    // 1 修改订单明细表内容
                    var saleOrder = erpsEntities.tsaleorder.AsNoTracking().Where(x => x.SaleOrderNO.Equals(saleOrderNo)).ToList();
                    if (saleOrder.Count < 1)
                    {
                        return(ret);
                    }
                    var salodr = saleOrder.FirstOrDefault <tsaleorder>();
                    salodr.State      = "N";
                    salodr.UpdateID   = userID;
                    salodr.UpdateDate = DateTime.Now;
                    erpsEntities.Entry(salodr).State = EntityState.Unchanged;
                    erpsEntities.Entry(salodr).Property(x => x.State).IsModified      = true;
                    erpsEntities.Entry(salodr).Property(x => x.UpdateID).IsModified   = true;
                    erpsEntities.Entry(salodr).Property(x => x.UpdateDate).IsModified = true;

                    // 修改订单明细内容
                    var saleodrdtls = erpsEntities.tsaleorderdtl.AsNoTracking().Where(x => x.SaleOrderNO.Equals(saleOrderNo)).ToList();
                    for (int i = 0; i < saleodrdtls.Count; i++)
                    {
                        saleodrdtls[i].DelNum     = 0;
                        saleodrdtls[i].LftNum     = saleodrdtls[i].OrderNum;
                        saleodrdtls[i].State      = "N";
                        saleodrdtls[i].UpdateID   = userID;
                        saleodrdtls[i].UpdateDate = DateTime.Now;
                        erpsEntities.Entry(saleodrdtls[i]).State = EntityState.Unchanged;
                        erpsEntities.Entry(saleodrdtls[i]).Property(x => x.DelNum).IsModified     = true;
                        erpsEntities.Entry(saleodrdtls[i]).Property(x => x.LftNum).IsModified     = true;
                        erpsEntities.Entry(saleodrdtls[i]).Property(x => x.State).IsModified      = true;
                        erpsEntities.Entry(saleodrdtls[i]).Property(x => x.UpdateID).IsModified   = true;
                        erpsEntities.Entry(saleodrdtls[i]).Property(x => x.UpdateDate).IsModified = true;
                    }

                    string whid      = "";
                    string pdtid     = "";
                    float  invNum    = 0;
                    var    date      = DateTime.Now;
                    var    stockrcds = erpsEntities.twhstockrecords.AsNoTracking().Where(w => w.SaleOrderNO.Equals(saleOrderNo) && w.State != "C").ToList();
                    for (int i = 0; i < stockrcds.Count; i++)
                    {
                        // 1 修改出入库记录表
                        stockrcds[i].State = "C"; //状态
                        //stockrcds[i].UpdateID = userID;
                        stockrcds[i].UpdateDate = date;
                        erpsEntities.Entry(stockrcds[i]).State = EntityState.Unchanged;
                        erpsEntities.Entry(stockrcds[i]).Property(x => x.State).IsModified = true;
                        //erpsEntities.Entry(stockrcds[i]).Property(x => x.UpdateID).IsModified = true;
                        erpsEntities.Entry(stockrcds[i]).Property(x => x.UpdateDate).IsModified = true;

                        twhstockrecords tmpstockrcds = new twhstockrecords();
                        tmpstockrcds.AreaID      = stockrcds[i].AreaID;
                        tmpstockrcds.No          = stockrcds[i].No;
                        tmpstockrcds.Num         = stockrcds[i].Num;
                        tmpstockrcds.PdtID       = stockrcds[i].PdtID;
                        tmpstockrcds.PosiID      = stockrcds[i].PosiID;
                        tmpstockrcds.PurOrderNO  = stockrcds[i].PurOrderNO;
                        tmpstockrcds.RefAreaID   = stockrcds[i].RefAreaID;
                        tmpstockrcds.RefPosiID   = stockrcds[i].RefPosiID;
                        tmpstockrcds.RefSeqNo    = stockrcds[i].RefSeqNo;
                        tmpstockrcds.RefWHID     = stockrcds[i].RefWHID;
                        tmpstockrcds.Remark      = stockrcds[i].Remark;
                        tmpstockrcds.SaleOrderNO = stockrcds[i].SaleOrderNO;
                        tmpstockrcds.WHID        = stockrcds[i].WHID;
                        tmpstockrcds.State       = "C";
                        tmpstockrcds.OpeType     = "IO";
                        tmpstockrcds.CreateDate  = date;
                        tmpstockrcds.UpdateID    = userID;
                        tmpstockrcds.UpdateDate  = date;
                        erpsEntities.twhstockrecords.Add(tmpstockrcds);
                    }
                    var invrcdsGroups = stockrcds.GroupBy(g => new { PdtID = g.PdtID, WHID = g.WHID })
                                        .Select(s => new
                    {
                        PdtID  = s.Key.PdtID,
                        WHID   = s.Key.WHID,
                        InvNum = s.Sum(m => m.Num)
                    }).ToList();
                    for (int i = 0; i < invrcdsGroups.Count; i++)
                    {
                        whid   = invrcdsGroups[i].WHID;
                        pdtid  = invrcdsGroups[i].PdtID;
                        invNum = invrcdsGroups[i].InvNum.Value;
                        // 2, 修改库存表
                        var invrcds = erpsEntities.twhinventory.AsNoTracking().Where(w => w.WHID.Equals(whid) && w.PdtID.Equals(pdtid)).ToList();
                        if (invrcds.Count > 0)
                        {
                            var invrcd = invrcds.FirstOrDefault <twhinventory>();
                            invrcd.InvNum = invrcd.InvNum + invNum;
                            erpsEntities.Entry(invrcd).State = EntityState.Unchanged;
                            erpsEntities.Entry(invrcd).Property(x => x.InvNum).IsModified = true;
                        }
                    }

                    ret = erpsEntities.SaveChanges();
                    tran.Commit();
                    if (ret > 0)
                    {
                        ret = 1;
                    }
                    return(ret);
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    ret = -1;
                    throw ex;
                }
            }
        }