コード例 #1
0
        public void CreateTurnoverNotice()
        {
            Contract contract = TempData["contract"] as Contract;

            if (contract.CheckToday())
            {
                TurnoverType turnoverType = null;
                decimal      price        = 0;
                if (contract.Contractor is Supplier)
                {
                    turnoverType = db.TurnoverTypes.FirstOrDefault(tt => tt.Name == "Приход");
                    price        = contract.Goods.PurchasePrice;
                }
                else if (contract.Contractor is Customer)
                {
                    turnoverType = db.TurnoverTypes.FirstOrDefault(tt => tt.Name == "Расход");
                    price        = contract.Goods.SellingPrice;
                }
                TurnoverNoticeStatus turnoverNoticeStatus = db.TurnoverNoticeStatus.FirstOrDefault(tns => tns.Name == "В ожидании");
                TurnoverNotice       turnoverNotice       = new TurnoverNotice {
                    Date = DateTime.Now, Goods = contract.Goods, GoodsQuantity = contract.GoodsQuantity, TurnoverType = turnoverType, Price = price, TurnoverMember = contract.Contractor, TurnoverNoticeStatus = turnoverNoticeStatus, Warehouse = contract.Warehouse
                };
                TempData["turnoverNotice"] = turnoverNotice;
                RedirectToAction("CreateForContract", "TurnoverNotice");
            }
        }
コード例 #2
0
        public ActionResult Cancel(int Id)
        {
            TurnoverNotice       turnoverNotice       = db.TurnoverNotices.Find(Id);
            TurnoverNoticeStatus turnoverNoticeStatus = db.TurnoverNoticeStatus.FirstOrDefault(tns => tns.Name == "Отменено");

            turnoverNotice.TurnoverNoticeStatus = turnoverNoticeStatus;
            db.SaveChanges();
            return(RedirectToAction("TurnoverNoticeStatus", turnoverNotice));
        }
コード例 #3
0
        public ActionResult Create([Bind(Include = "Date,GoodsId,GoodsQuantity,TurnoverTypeId,TurnoverMemberId,WarehouseId")] TurnoverNotice turnoverNotice)
        {
            TurnoverType turnoverType = db.TurnoverTypes.Find(turnoverNotice.TurnoverTypeId);

            if (turnoverType.Name == "Расход")
            {
                var           goodsMovements = db.GoodsMovements.ToList();
                GoodsMovement goodsMovement  = goodsMovements.FirstOrDefault(gm => gm.GoodsId == turnoverNotice.GoodsId && gm.WarehouseId == turnoverNotice.WarehouseId && gm.Date.Date == DateTime.Now.Date);
                if (turnoverNotice.GoodsQuantity > goodsMovement.GoodsBalance)
                {
                    ModelState.AddModelError("GoodsQuantity", "На складе недостаточно товара, в наличии только " + goodsMovement.GoodsBalance);
                }
            }

            if (ModelState.IsValid)
            {
                TurnoverNoticeStatus turnoverNoticeStatus = db.TurnoverNoticeStatus.FirstOrDefault(tns => tns.Name == "В ожидании");
                turnoverNotice.TurnoverNoticeStatusId = turnoverNoticeStatus.Id;
                if (turnoverType.Name == "Внутреннее перемещение")
                {
                    TurnoverType turnoverType1 = db.TurnoverTypes.FirstOrDefault(tt => tt.Name == "Приход");
                    turnoverNotice.TurnoverTypeId = turnoverType1.Id;
                    turnoverNotice.Price          = 0;
                    TurnoverType   turnoverType2   = db.TurnoverTypes.FirstOrDefault(tt => tt.Name == "Расход");
                    TurnoverNotice turnoverNotice2 = new TurnoverNotice()
                    {
                        Date = turnoverNotice.Date, TurnoverTypeId = turnoverType2.Id, GoodsId = turnoverNotice.GoodsId, GoodsQuantity = turnoverNotice.GoodsQuantity, Price = 0, TurnoverMemberId = turnoverNotice.WarehouseId, WarehouseId = turnoverNotice.TurnoverMemberId, TurnoverNoticeStatusId = turnoverNotice.TurnoverNoticeStatusId
                    };
                    db.TurnoverNotices.Add(turnoverNotice);
                    db.TurnoverNotices.Add(turnoverNotice2);
                    db.SaveChanges();
                }
                else
                {
                    Goods goods = db.Goods.Find(turnoverNotice.GoodsId);
                    turnoverNotice.Price = turnoverType.Name == "Приход" ? goods.PurchasePrice : goods.SellingPrice;
                    db.TurnoverNotices.Add(turnoverNotice);
                    db.SaveChanges();
                }
                return(RedirectToAction("Index"));
            }
            List <Goods> goodsList = db.Goods.Where(g => g.Status == true).ToList();

            ViewBag.GoodsId = new SelectList(goodsList, "Id", "Name");
            List <Supplier> suppliers = db.Suppliers.Where(g => g.Status == true).ToList();

            ViewBag.TurnoverMemberId = new SelectList(suppliers, "Id", "Name");
            ViewBag.TurnoverTypeId   = new SelectList(db.TurnoverTypes.ToList(), "Id", "Name", 1);
            List <Warehouse> warehouses = db.Warehouses.Where(g => g.Status == true).ToList();

            ViewBag.WarehouseId = new SelectList(warehouses, "Id", "Name");
            return(View(turnoverNotice));
        }
コード例 #4
0
        public ActionResult Create()
        {
            List <Goods> goods = db.Goods.Where(g => g.Status == true).ToList();

            ViewBag.GoodsId = new SelectList(goods, "Id", "Name");
            List <Supplier> suppliers = db.Suppliers.Where(g => g.Status == true).ToList();

            ViewBag.TurnoverMemberId = new SelectList(suppliers, "Id", "Name");
            ViewBag.TurnoverTypeId   = new SelectList(db.TurnoverTypes.ToList(), "Id", "Name");
            List <Warehouse> warehouses = db.Warehouses.Where(g => g.Status == true).ToList();

            ViewBag.WarehouseId = new SelectList(warehouses, "Id", "Name");
            TurnoverNotice model = new TurnoverNotice();

            return(View(model));
        }
コード例 #5
0
        public ActionResult Create([Bind(Include = "Id,ConclusionDate,GoodsId,GoodsQuantity,TurnoverPeriodicity,TurnoverTypeId,StartDate,ContractorId,WarehouseId")] Contract contract)
        {
            TurnoverType turnoverType = db.TurnoverTypes.Find(contract.TurnoverTypeId);

            if (turnoverType.Name == "Расход")
            {
                var           goodsMovements  = db.GoodsMovements.ToList();
                GoodsMovement goodsMovement   = goodsMovements.FirstOrDefault(gm => gm.GoodsId == contract.GoodsId && gm.WarehouseId == contract.WarehouseId && gm.Date.Date == DateTime.Now.Date);
                var           turnoverNotices = db.TurnoverNotices.Include(tn => tn.TurnoverNoticeStatus).Include(tn => tn.TurnoverType).ToList();
                int           goodsQuantityInTurnoverNotices = turnoverNotices.Where(tn => tn.GoodsId == contract.GoodsId && tn.WarehouseId == contract.WarehouseId && tn.TurnoverNoticeStatus.Name == "В ожидании" && tn.TurnoverType.Name == "Расход").Select(tn => tn.GoodsQuantity).Sum();
                var           balance = goodsMovement.GoodsBalance - goodsQuantityInTurnoverNotices;
                if (contract.GoodsQuantity > balance)
                {
                    ModelState.AddModelError("GoodsQuantity", "На складе недостаточно товара, в наличии только " + balance);
                }
            }
            if (ModelState.IsValid)
            {
                contract.Status = true;
                db.Contracts.Add(contract);
                db.SaveChanges();
                if (contract.CheckToday())
                {
                    TurnoverNotice turnoverNotice = new TurnoverNotice()
                    {
                        Date = DateTime.Now, GoodsId = contract.GoodsId, GoodsQuantity = contract.GoodsQuantity, TurnoverMemberId = contract.ContractorId, TurnoverTypeId = contract.TurnoverTypeId, WarehouseId = contract.WarehouseId
                    };
                    Goods goods = db.Goods.Find(turnoverNotice.GoodsId);
                    turnoverNotice.Price = turnoverType.Name == "Приход" ? goods.PurchasePrice : goods.SellingPrice;
                    TurnoverNoticeStatus turnoverNoticeStatus = db.TurnoverNoticeStatus.FirstOrDefault(tns => tns.Name == "В ожидании");
                    turnoverNotice.TurnoverNoticeStatusId = turnoverNoticeStatus.Id;
                    db.TurnoverNotices.Add(turnoverNotice);
                    db.SaveChanges();
                }
                return(RedirectToAction("Index"));
            }
            List <TurnoverType> turnoverTypes = db.TurnoverTypes.Where(tt => tt.Name == "Приход" || tt.Name == "Расход").ToList();

            ViewBag.TurnoverTypeId = new SelectList(turnoverTypes, "Id", "Name");
            List <Warehouse> warehouses = db.Warehouses.Where(g => g.Status == true).ToList();

            ViewBag.WarehouseId = new SelectList(warehouses, "Id", "Name");
            List <Goods> goodsList = db.Goods.Where(tm => tm.Status == true).ToList();

            ViewBag.GoodsId = new SelectList(goodsList, "Id", "Name");
            return(View(contract));
        }
コード例 #6
0
        public ActionResult Confirm(int Id)
        {
            TurnoverNotice       turnoverNotice       = db.TurnoverNotices.Find(Id);
            TurnoverNoticeStatus turnoverNoticeStatus = db.TurnoverNoticeStatus.FirstOrDefault(tns => tns.Name == "Подтверждено");

            turnoverNotice.TurnoverNoticeStatus = turnoverNoticeStatus;
            db.SaveChanges();

            List <GoodsMovement> goodsMovements = db.GoodsMovements.ToList();
            GoodsMovement        goodsMovement  = goodsMovements.FirstOrDefault(gm => gm.GoodsId == turnoverNotice.GoodsId && gm.WarehouseId == turnoverNotice.WarehouseId && gm.Date.Date == turnoverNotice.Date.Date);
            TurnoverType         turnoverType   = db.TurnoverTypes.Find(turnoverNotice.TurnoverTypeId);

            goodsMovement.AddTurnover(turnoverType, turnoverNotice.GoodsQuantity);
            db.Entry(goodsMovement).State = EntityState.Modified;
            db.SaveChanges();
            return(RedirectToAction("TurnoverNoticeStatus", turnoverNotice));
        }
コード例 #7
0
ファイル: Job.cs プロジェクト: adalov/WholesaleBase
        public Task Execute(IJobExecutionContext context)
        {
            //создание двежений товаров
            DateTime lastDate           = DateTime.Now.AddDays(-1);
            var      goodsList          = db.Goods.Where(g => g.Status == true).Include(g => g.GoodsMovements).ToList();
            var      warehouseList      = db.Warehouses.Where(w => w.Status == true).ToList();
            var      goodsMovementsList = db.GoodsMovements.ToList();

            foreach (var goods in goodsList)
            {
                foreach (var warehouse in warehouseList)
                {
                    int           goodsBalance     = goods.GoodsMovements.Where(m => m.WarehouseId == warehouse.Id && m.Date.Date == lastDate.Date).Select(m => m.GoodsBalance).SingleOrDefault();
                    GoodsMovement newGoodsMovement = new GoodsMovement {
                        Date = DateTime.Now, GoodsId = goods.Id, WarehouseId = warehouse.Id, GoodsArrival = 0, GoodsConsumption = 0, GoodsBalance = goodsBalance
                    };
                    db.GoodsMovements.Add(newGoodsMovement);
                }
            }
            db.SaveChanges();
            //создание уведомлений оборотов
            var contracts = db.Contracts.Where(c => c.Status == true).ToList();

            foreach (var contract in contracts)
            {
                if (contract.CheckToday())
                {
                    TurnoverType   turnoverType   = db.TurnoverTypes.Find(contract.TurnoverTypeId);
                    TurnoverNotice turnoverNotice = new TurnoverNotice()
                    {
                        Date = DateTime.Now, GoodsId = contract.GoodsId, GoodsQuantity = contract.GoodsQuantity, TurnoverMemberId = contract.ContractorId, TurnoverTypeId = contract.TurnoverTypeId, WarehouseId = contract.WarehouseId
                    };
                    Goods goods = db.Goods.Find(turnoverNotice.GoodsId);
                    turnoverNotice.Price = turnoverType.Name == "Приход" ? goods.PurchasePrice : goods.SellingPrice;
                    TurnoverNoticeStatus turnoverNoticeStatus = db.TurnoverNoticeStatus.FirstOrDefault(tns => tns.Name == "В ожидании");
                    turnoverNotice.TurnoverNoticeStatusId = turnoverNoticeStatus.Id;
                    db.TurnoverNotices.Add(turnoverNotice);
                }
            }
            db.SaveChanges();
            return(Task.CompletedTask);
        }
コード例 #8
0
        public ActionResult TurnoverMembersList(int id, int goodsId, int WarehouseId, int TurnoverMemberId, TurnoverNotice model)
        {
            var turnoverTypeName        = db.TurnoverTypes.Find(id).Name;
            List <Warehouse> warehouses = db.Warehouses.Where(g => g.Status == true).ToList();

            ViewBag.WarehouseId = new SelectList(warehouses, "Id", "Name");
            switch (turnoverTypeName)
            {
            case "Приход":
                Goods           goods     = db.Goods.Find(goodsId);
                List <Supplier> suppliers = db.Suppliers.Where(g => g.Status == true).ToList();
                ViewBag.TurnoverMemberId = new SelectList(suppliers.Where(s => s.Id == goods.SupplierId), "Id", "Name");
                return(PartialView(model));

            case "Расход":
                List <Customer> customers = db.Customers.Where(g => g.Status == true).ToList();
                ViewBag.TurnoverMemberId = new SelectList(customers, "Id", "Name");
                return(PartialView(model));

            case "Внутреннее перемещение":
                ViewBag.TurnoverMemberId = new SelectList(warehouses, "Id", "Name");
                return(PartialView("WarehousesList", model));

            default: return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
        }
コード例 #9
0
 public PartialViewResult TurnoverNoticeStatus(TurnoverNotice item)
 {
     item.TurnoverNoticeStatus = db.TurnoverNoticeStatus.Find(item.TurnoverNoticeStatusId);
     return(PartialView(item));
 }
コード例 #10
0
 public ActionResult Warehouse(int id, TurnoverNotice model)
 {
     ViewBag.WarehouseId = new SelectList(db.Warehouses.Where(w => w.Id != id).ToList(), "Id", "Name");
     return(PartialView(model));
 }