Esempio n. 1
0
 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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
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));
        }
        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));
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
 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));
 }
Esempio n. 9
0
        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));
        }
Esempio n. 10
0
        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"));
        }
Esempio n. 11
0
 /// <summary>
 /// 复审
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public bool SecondCheck(GoodsMovement model, GMSecondCheck gmsc)
 {
     return(iGoodsMovementDAL.SecondCheck(model, gmsc));
 }
Esempio n. 12
0
 /// <summary>
 /// 初审
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public bool FirstCheck(GoodsMovement model)
 {
     return(iGoodsMovementDAL.FirstCheck(model));
 }
Esempio n. 13
0
 /// <summary>
 /// 修改入库单
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public bool UpdateGoodsMovement(GoodsMovement model)
 {
     return(iGoodsMovementDAL.UpdateGoodsMovement(model));
 }
Esempio n. 14
0
 /// <summary>
 /// 新增入库单
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public int AddGoodsMovement(GoodsMovement model)
 {
     return(iGoodsMovementDAL.AddGoodsMovement(model));
 }
Esempio n. 15
0
 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);
         }
     }
 }