public Invoice InvoiceGenerator(GoodsMovement _goodsMovement, bool _toPay, double _discount, Customer _subject, string _employeeCode, bool _isPerc) { if (_isPerc) { return(InvoiceFactory.CreateInvoice(UpdateProgressiveNumber(), _toPay, Services.CalculateDiscountPerc(_discount, Services.CalculateAmount(_goodsMovement)), _discount, _subject, new Employee(_employeeCode), _goodsMovement)); } else { return(InvoiceFactory.CreateInvoice(UpdateProgressiveNumber(), _toPay, Services.CalculateAmountWithDiscount(Services.CalculateAmount(_goodsMovement), _discount), _discount, _subject, new Employee(_employeeCode), _goodsMovement)); } }
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 Confirm(int Id) { InventoryResult inventoryResult = db.InventoryResults.Find(Id); inventoryResult.Status = true; db.SaveChanges(); var goodsMovements = db.GoodsMovements.ToList(); GoodsMovement goodsMovement = goodsMovements.FirstOrDefault(gm => gm.Date.Date == DateTime.Now.Date && gm.GoodsId == inventoryResult.GoodsId && gm.WarehouseId == inventoryResult.WarehouseId); goodsMovement.GoodsBalance += inventoryResult.ActualGoodsBalance - inventoryResult.RegisteredGoodsBalance; db.Entry(goodsMovement).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("InventoryResultStatus", inventoryResult)); }
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 ActionResult InventorizationSend(InventorizationViewModel model, int goodsQuantity) { Goods goods = db.Goods.Find(model.Id); ApplicationUserManager UserManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>(); ApplicationUser user = UserManager.FindByName(User.Identity.Name); var WarehouseId = user.Claims.SingleOrDefault(c => c.ClaimType == "WarehouseId").ClaimValue; GoodsMovement goodsMovement = goods.GoodsMovements.FirstOrDefault(gm => gm.WarehouseId.ToString() == WarehouseId && gm.Date.Date == DateTime.Now.Date); int goodsBalance = goodsMovement.GoodsBalance; InventoryResult inventoryResult = new InventoryResult { GoodsId = model.Id, ActualGoodsBalance = goodsQuantity, RegisteredGoodsBalance = goodsBalance, InventoryDate = DateTime.Now, WarehouseId = Int32.Parse(WarehouseId) }; db.InventoryResults.Add(inventoryResult); db.SaveChanges(); ((List <InventorizationViewModel>)HttpContext.Session["Inv"]).Find(x => x.Id == model.Id).Status = true; model.Status = ((List <InventorizationViewModel>)HttpContext.Session["Inv"]).Find(x => x.Id == model.Id).Status; return(PartialView("InventorizationPartial", model)); }
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 Create([Bind(Include = "Id,Name,SupplierId,MeasureUnitId,PurchasePrice,SellingPrice")] Goods goods) { if (ModelState.IsValid) { goods.Status = true; db.Goods.Add(goods); db.SaveChanges(); foreach (Warehouse warehouse in db.Warehouses.Where(w => w.Status == true).ToList()) { GoodsMovement goodsMovement = new GoodsMovement { Date = DateTime.Now, GoodsId = goods.Id, GoodsArrival = 0, GoodsConsumption = 0, GoodsBalance = 0, WarehouseId = warehouse.Id }; db.GoodsMovements.Add(goodsMovement); } db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.MeasureUnitId = new SelectList(db.MeasureUnits.ToList(), "Id", "Name", goods.MeasureUnitId); ViewBag.SupplierId = new SelectList(db.Suppliers.Where(s => s.Status == true).ToList(), "Id", "Name", goods.SupplierId); return(View(goods)); }
public static double CalculateAmount(GoodsMovement _movement) { double _amount = 0; if (_movement is Rent) { Rent temp = (Rent)_movement; foreach (Product _product in _movement.ProductsToMove) { _amount += _product.RentPrice * (temp.EndDate - temp.BeginDate).Days; } } else if (_movement is Sell) { foreach (Product _product in _movement.ProductsToMove) { _amount += _product.SellPrice; } } return(RoundToTwo(_amount)); }
public ActionResult RemoveOrRestore(int Id) { Warehouse warehouse = db.Warehouses.Find(Id); warehouse.Status = !warehouse.Status; db.SaveChanges(); if (warehouse.Status == true) { var goodsMovement = db.GoodsMovements.ToList().Where(gm => gm.Date.Date == DateTime.Now.Date && gm.WarehouseId == warehouse.Id).FirstOrDefault(); if (goodsMovement == null) { foreach (Goods goods in db.Goods.Where(w => w.Status == true).ToList()) { goodsMovement = new GoodsMovement { Date = DateTime.Now, GoodsId = goods.Id, GoodsArrival = 0, GoodsConsumption = 0, GoodsBalance = 0, WarehouseId = warehouse.Id }; db.GoodsMovements.Add(goodsMovement); } db.SaveChanges(); } } return(RedirectToAction("Index")); }
/// <summary> /// 复审 /// </summary> /// <param name="model"></param> /// <returns></returns> public bool SecondCheck(GoodsMovement model, GMSecondCheck gmsc) { return(iGoodsMovementDAL.SecondCheck(model, gmsc)); }
/// <summary> /// 初审 /// </summary> /// <param name="model"></param> /// <returns></returns> public bool FirstCheck(GoodsMovement model) { return(iGoodsMovementDAL.FirstCheck(model)); }
/// <summary> /// 修改入库单 /// </summary> /// <param name="model"></param> /// <returns></returns> public bool UpdateGoodsMovement(GoodsMovement model) { return(iGoodsMovementDAL.UpdateGoodsMovement(model)); }
/// <summary> /// 新增入库单 /// </summary> /// <param name="model"></param> /// <returns></returns> public int AddGoodsMovement(GoodsMovement model) { return(iGoodsMovementDAL.AddGoodsMovement(model)); }
public static Invoice CreateInvoice(int _progressiveNumber, bool _toPay, double _amount, double _discount, Customer _subject, Employee _employee, GoodsMovement _goodMovement) { if (_goodMovement is Rent) { return(new RentInvoice(_progressiveNumber, _toPay, EmissionDate, _amount + CalcFee((Rent)_goodMovement), _goodMovement.ProductsToMove, _discount, _subject, _employee, CalcFee((Rent)_goodMovement))); } else { if (_goodMovement is Sell) { return(new SellInvoice(_progressiveNumber, _toPay, EmissionDate, _amount, _goodMovement.ProductsToMove, _discount, _subject, _employee)); } else { return(null); } } }