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"); } }
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)); }
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)); }
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)); }
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)); }
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)); }
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); }
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)); } }
public PartialViewResult TurnoverNoticeStatus(TurnoverNotice item) { item.TurnoverNoticeStatus = db.TurnoverNoticeStatus.Find(item.TurnoverNoticeStatusId); return(PartialView(item)); }
public ActionResult Warehouse(int id, TurnoverNotice model) { ViewBag.WarehouseId = new SelectList(db.Warehouses.Where(w => w.Id != id).ToList(), "Id", "Name"); return(PartialView(model)); }