Пример #1
0
        /// <summary>
        /// Adicionar um BookStock e atualizar a data do estoque.
        /// </summary>
        /// <param name="bookName">Informar o nome do livro</param>
        /// <param name="stockQuantity">Informar a quantidade em estoque do livro</param>
        ///
        public BookStock Post(string bookName, int stockQuantity)
        {
            var newBookStock = new BookStock(bookName, stockQuantity);

            _booksStockDataBase.BooksStock.Add(newBookStock);
            return(newBookStock);
        }
Пример #2
0
 private void AsserAreEqualBookStock(BookStock expectBookStock, BookStock actualBookStock)
 {
     Assert.AreEqual(expectBookStock.BookID, actualBookStock.BookID);
     Assert.AreEqual(expectBookStock.BookName, actualBookStock.BookName);
     Assert.AreEqual(expectBookStock.StockQuantity, actualBookStock.StockQuantity);
     Assert.AreEqual(expectBookStock.StockUpdated.ToLongDateString(), actualBookStock.StockUpdated.ToLongDateString());
 }
Пример #3
0
 protected void Page_Load(object sender, EventArgs e)
 {
     //当页面启动时,将bookstock对象加载到会话变量中
     //这样就可以让BookStock对象被多个页面访问
     BookStock bookstock = new BookStock();
     Session["bookstock"] = bookstock;
     GetSessionInformation();
 }
Пример #4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        //当页面启动时,将bookstock对象加载到会话变量中
        //这样就可以让BookStock对象被多个页面访问
        BookStock bookstock = new BookStock();

        Session["bookstock"] = bookstock;
        GetSessionInformation();
    }
 public ActionResult <BookStock> Put(long id, [FromBody] BookStock bookStock)
 {
     if (id != bookStock.Id)
     {
         return(BadRequest());
     }
     _context.Entry(bookStock).State = EntityState.Modified;
     _context.SaveChanges();
     return(NoContent());
 }
Пример #6
0
        public BookStock InsertOneBookStock()
        {
            var expectStockUpdated = DateTime.Now;
            var bookStock          = new BookStock("One BookStock", 10);

            _booksStockDataBase.BooksStock.Add(bookStock);
            Assert.IsNotNull(bookStock.BookID);
            Assert.IsTrue(bookStock.StockUpdated >= expectStockUpdated, "A data do estoque não foi atualizada!");
            return(bookStock);
        }
Пример #7
0
        /// <summary>
        /// Load book stock from a json string
        /// </summary>
        /// <param name="catallogAsJson">Book stock in json format</param>
        public void Import(string catallogAsJson)
        {
            if (!string.IsNullOrWhiteSpace(CatalogSchema))
            {
                BookStock.ValidateJsonFormat(catallogAsJson, CatalogSchema);
            }

            bookStock  = BookStock.FromJson(catallogAsJson);
            Books      = bookStock.Books.ToDictionary(b => b.Name, b => b);
            Categories = bookStock.Categories.ToDictionary(c => c.Name, c => c.Discount);
        }
        public ActionResult <IEnumerable <BookStock> > Get()
        {
            List <BookStock> listBookStock = new List <BookStock>();
            BookStock        bookStock     = new BookStock()
            {
                Title = "", Description = "", AuthorName = "", CategoryName = "", ISBN = "", PublisherName = "", Price = 0, Quantity = 0
            };

            listBookStock.Add(bookStock);
            return(listBookStock);
        }
Пример #9
0
        public async Task <RedeemDeliveryCommandResult> Handle(RedeemDeliveryCommand request, CancellationToken cancellationToken)
        {
            var deliveryToRedeem = await _activeDeliveryRepository.FindByIdAsync(request.Id);

            if (deliveryToRedeem is null)
            {
                return(new RedeemDeliveryCommandResult(false,
                                                       new List <string> {
                    $"Active Delivery: {request.Id} not found"
                }));
            }

            // if (deliveryToRedeem.RedeemDelivery(out string error))
            //     return new RedeemDeliveryCommandResult(false, new List<string> {error});

            if (!_activeDeliveryRepository.RedeemDelivery(deliveryToRedeem, out string error))
            {
                return(new RedeemDeliveryCommandResult(false, new List <string> {
                    error
                }));
            }

            var createdStocks = new List <BookStock>();

            foreach (var item in deliveryToRedeem.Items)
            {
                for (var i = 0; i < item.ItemsCount; i++)
                {
                    var stockToAdd = new BookStock(deliveryToRedeem, item);
                    _bookStockRepository.Add(stockToAdd);
                    createdStocks.Add(stockToAdd);
                }
            }

            var completedDelivery = new CompletedDelivery(deliveryToRedeem, createdStocks);

            if (_completedDeliveryRepository.Add(completedDelivery) is null)
            {
                return(new RedeemDeliveryCommandResult(false,
                                                       new List <string> {
                    "Something wend wrong during adding Completed Delivery"
                }));
            }

            if (await _activeDeliveryRepository.UnitOfWork.SaveChangesAsync() < 1)
            {
                return(new RedeemDeliveryCommandResult(false, new List <string>()
                {
                    "Error occured during saving to DB"
                }));
            }

            return(new RedeemDeliveryCommandResult(true));
        }
Пример #10
0
 private void btnAddBook_Click(object sender, EventArgs e)
 {
     bs = new BookStock();
     bs.ArriveQuantity   = int.Parse(txtNetNum.Text);
     bs.Discount         = float.Parse(txtDiscount.Text);
     bs.NetPrice         = float.Parse(txtNetPrice.Text);
     bs.NoArriveQuantity = int.Parse(txtNum.Text) - int.Parse(txtNetNum.Text);
     bs.ISBN             = txtISBN.Text;
     bllbs.UpdateBookStock(bs);
     txtText();
     dgvOrder.DataSource = bllo.GetAllOrder(5, null);
 }
Пример #11
0
 protected void Page_Load(object sender, EventArgs e)
 {
     //调用Request.QueryString方法获取查询字符串的值
     string BookName =Server.UrlDecode(Request.QueryString["BookName"]);
     //构造一个BookStock类,初始化书籍信息
     BookStock books = new BookStock();
     //使用Linq表达式查询BookStock中指定书名的书籍信息
     var s = from book in books
             where book.BookName == BookName
             select book;
     //绑定查询结果到DetailsView控件中
     DetailsView1.DataSource = s;
     DetailsView1.DataBind();
 }
Пример #12
0
    protected void Page_Load(object sender, EventArgs e)
    {
        //调用Request.QueryString方法获取查询字符串的值
        string BookName = Server.UrlDecode(Request.QueryString["BookName"]);
        //构造一个BookStock类,初始化书籍信息
        BookStock books = new BookStock();
        //使用Linq表达式查询BookStock中指定书名的书籍信息
        var s = from book in books
                where book.BookName == BookName
                select book;

        //绑定查询结果到DetailsView控件中
        DetailsView1.DataSource = s;
        DetailsView1.DataBind();
    }
Пример #13
0
        public void UpdateBookStock(BookStock bookstock)
        {
            string sql = "Update BookStock set ArriveQuantity=@ArriveQuantity,NoArriveQuantity=@NoArriveQuantity,NetPrice=@NetPrice,Discount=@Discount,Arrived='true' where BookStock.PlanBookID = (select PlanBook.PlanBookID from PlanBook where ISBN=@ISBN)";

            SqlParameter[] parameter = { new SqlParameter("@ArriveQuantity",   SqlDbType.Int),
                                         new SqlParameter("@NoArriveQuantity", SqlDbType.Int),
                                         new SqlParameter("@NetPrice",         SqlDbType.Float),
                                         new SqlParameter("@Discount",         SqlDbType.Float),
                                         new SqlParameter("@ISBN",             SqlDbType.VarChar) };
            parameter[0].Value = bookstock.ArriveQuantity;
            parameter[1].Value = bookstock.NoArriveQuantity;
            parameter[2].Value = bookstock.NetPrice;
            parameter[3].Value = bookstock.Discount;
            parameter[4].Value = bookstock.ISBN;
            DBHelpers.UpdateInfo(sql, parameter);
        }
        public BookStocksController(TodoContext context)
        {
            _context = context;

            if (_context.BookStocks.Count() == 0)
            {
                // Create a new TodoItem if collection is empty,
                // which means you can't delete all TodoItems.
                BookStock bookStock = new BookStock()
                {
                    Title = "Phi Lý Trí", Description = "Best Book", AuthorName = "Don Ariel", CategoryName = "Kinh Tế", ISBN = "4235435435", PublisherName = "NXB Trẻ", Price = 20000, Quantity = 15
                };
                _context.BookStocks.Add(bookStock);
                _context.SaveChanges();
            }
        }
Пример #15
0
        public async Task <IActionResult> EditAsync(BookStock bookStock)
        {
            /*Stock stock = new Stock
             * {
             *  Id = bookStock.IdStock,
             *  CurrentStock = bookStock.currentStock
             *
             * };*/

            string accessToken = await HttpContext.GetTokenAsync("access_token");

            HttpClient client = new HttpClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

            string content = await client.GetStringAsync(_configuration["URLApi"] + "api/Books/" + bookStock.IdBook);

            Book book = JsonConvert.DeserializeObject <Book>(content);

            if (book == null)
            {
                return(NotFound());
            }
            else
            {
                if (bookStock.currentStock >= 0)
                {
                    book.Stock = bookStock.currentStock;

                    string jsonString = System.Text.Json.JsonSerializer.Serialize <Models.Book>(book);

                    StringContent       httpContent = new StringContent(jsonString, Encoding.UTF8, "application/json");
                    HttpResponseMessage response    = await client.PutAsync(_configuration["URLApi"] + "api/Books/" + book.Id, httpContent);

                    if (!response.IsSuccessStatusCode)
                    {
                        return(View("Error"));
                    }
                }
            }

            return(RedirectToAction("index"));
        }
Пример #16
0
 protected void btnmore_Click(object sender, EventArgs e)
 {
     if (ListBox1.SelectedIndex == -1)
     {
         Response.Write("请选择书籍信息");
     }
     else
     {
         ////从Session中获取BookStock类。
         BookStock bookstock = (BookStock)Session["bookstock"];
         //使用LINQ查询泛型集合
         var s = from book in bookstock
                 where book.BookName == ListBox1.SelectedValue
                 select book;
         //绑定到DetailsView控件
         DetailsView1.DataSource = s;
         DetailsView1.DataBind();
     }
 }
Пример #17
0
        public async Task <bool> IncrementStocks(BookStockViewModel bookStockViewModel)
        {
            var books = bookStockViewModel.StockViewModels.GroupBy(s => s.Sn)
                        .Select(g => new { Sn = g.Key, Count = g.Sum(s => s.Count) })
                        .ToList();

            var sns = books.Select(b => b.Sn).ToList();

            var stocks = await bookContext.BookStocks
                         .Where(s => sns.Contains(s.Sn))
                         .ToListAsync();

            foreach (var book in books)
            {
                var stock = stocks.Find(s => s.Sn == book.Sn);
                if (stock == null)
                {
                    stock = new BookStock
                    {
                        Sn         = book.Sn,
                        StockCount = 0
                    };

                    bookContext.BookStocks.Add(stock);
                }

                if (stock.StockCount < 0 || stock.FreezeStock > stock.StockCount)
                {
                    logger.LogError("detected data {Id} run into concurrent conflict state! freeze {freezeCount}, stock {stockCount}", stock.Id, stock.FreezeStock, stock.StockCount);
                    continue;
                }
                //test
                //stock.StockCount += book.Count;

                stock.StockCount  = 30;
                stock.FreezeStock = 0;
            }

            await bookContext.SaveChangesAsync();

            return(true);
        }
Пример #18
0
        public IHttpActionResult ReserveBook(int bookID, int userID)
        {
            try
            {
                BookStock bs = BookStockRepository.GetCacheBookStocks().FirstOrDefault(x => x.BookID == bookID && x.Status == BookStockStatus.Available);
                if (bs == null)
                {
                    //The stocks of the book you have researched for is insufficient
                    return(Json("0"));
                }
                int returnedCount = BookTransactionRepository.GetCacheBookTransactions().Where(x => x.UserID == userID && x.Status != BookTransactionStatus.Returned).Count();
                if (returnedCount == 3)
                {
                    return(Json("-2"));
                }

                BookTransaction bt = new BookTransaction();
                bt.BookID                  = bookID;
                bt.DateOfReserved          = DateTime.Now;
                bt.ExpirationOfReserveDate = DateTime.Now.AddDays(7);
                bt.UserID                  = userID;
                bt.Status                  = BookTransactionStatus.Reserved;

                BookTransactionRepository btr = new BookTransactionRepository();
                btr.AddEntity(bt);

                bs.Status = BookStockStatus.Reserved;
                BookStockRepository bsr = new BookStockRepository();
                bsr.UpdateEntity(bs);

                LogRepository.NewLog(bookID, userID);
            }
            catch (Exception)
            {
                return(Json("-1"));
            }

            return(Json("1"));
        }
Пример #19
0
        public void InvalidReceipt(Guid receiptId, Guid operatorId)
        {
            var period = DbSession.SysVariables.All.SingleOrDefault(v => v.Name.Equals("NY"));

            if (period == null)
            {
                throw new Exception("取不到当前年月");
            }

            if (!period.Value.Equals(DateTime.Now.ToString("yyMM")))
            {
                throw new Exception("系统年月与当前年月不符,审核失败");
            }

            var theBeforeReceipt = DbSession.OutStockReceipts.All.Where(r => r.IsAudited && r.ID == receiptId).SingleOrDefault();

            if (theBeforeReceipt == null)
            {
                throw new Exception("不存在该单据");
            }

            if (theBeforeReceipt.InvalidReceipt != null)
            {
                throw new Exception("该单据已经作废");
            }
            if (theBeforeReceipt.BeforeVoidReceipt != null)
            {
                throw new Exception("该单据由作废单据产生,不能作废");
            }

            var operatorUser   = DbSession.Users.GetSingle(u => u.ID == operatorId);
            var invalidReceipt = new OutStockReceipt
            {
                ID         = Guid.NewGuid(),
                NO         = GetNO(DateTime.Now.ToString("yyMMdd")),
                Freight    = -theBeforeReceipt.Freight,
                Remark     = "作废出库单(" + theBeforeReceipt.NO + ")产生的红字单据",
                SubmitDate = DateTime.Now,
                AuditDate  = DateTime.Now,
                IsAudited  = true,
                OrderID    = theBeforeReceipt.OrderID,

                SubmittedBy       = operatorUser,
                AuditedBy         = operatorUser,
                Order             = theBeforeReceipt.Order,
                BeforeVoidReceipt = theBeforeReceipt
            };

            invalidReceipt.Details =
                (from d in theBeforeReceipt.Details
                 select new OutStockReceiptDetail
            {
                ID = Guid.NewGuid(),
                Sort = d.Sort,
                OutQuantity = -d.OutQuantity,
                OutUnitPrice = d.OutUnitPrice,
                AccountPrice = d.AccountPrice,
                BookID = d.BookID,
                ReceiptHeader = invalidReceipt,
                Book = d.Book
            }).ToList();
            theBeforeReceipt.InvalidReceipt = invalidReceipt;
            DbSession.OutStockReceipts.Add(invalidReceipt, false);

            bool istj = false;

            foreach (var d in theBeforeReceipt.Details)
            {
                var stock       = d.Book.Stock;
                var outQuantity = -d.OutQuantity;
                var outMoney    = -(d.OutQuantity * (decimal)d.Book.AccountPrice);
                if (stock == null)
                {
                    stock = new BookStock
                    {
                        ID                  = Guid.NewGuid(),
                        StockOf             = d.Book,
                        PriorPeriodQuantity = 0,
                        PriorPeriodMoney    = 0,
                        EntryQuantity       = 0,
                        EntryMoney          = 0,
                        OutQuantity         = outQuantity,
                        OutMoney            = outMoney,
                        StocktakeQuantity   = 0,
                        StocktakeMoney      = 0,
                        DamagedQuantity     = 0,
                        DamagedMoney        = 0,
                        AdjustMoney         = 0,
                        ThisPeriodQuantity  = -outQuantity,
                        ThisPeriodMoney     = -outMoney
                    };
                    DbSession.BookStocks.Add(stock, false);
                }
                else
                {
                    stock.OutQuantity        += outQuantity;
                    stock.OutMoney           += outMoney;
                    stock.ThisPeriodQuantity -= outQuantity;
                    stock.ThisPeriodMoney    -= outMoney;
                }
                if (!istj)
                {
                    istj = (d.Book.AccountPrice != d.AccountPrice);
                }
            }

            if (istj)
            {
                var priceAdjustReceipt = new PriceAdjustReceipt
                {
                    ID         = Guid.NewGuid(),
                    NO         = GetTJNO(DateTime.Now.ToString("yyMMdd")),
                    Remark     = "作废出库单(" + theBeforeReceipt.NO + ")产生的调价单",
                    SubmitDate = DateTime.Now,
                    AuditDate  = DateTime.Now,
                    IsAudited  = true,

                    SubmittedBy = operatorUser,
                    AuditedBy   = operatorUser
                };

                int sort = 1;
                foreach (var d in theBeforeReceipt.Details)
                {
                    priceAdjustReceipt.Details.Add(new PriceAdjustReceiptDetail {
                        ID              = Guid.NewGuid(),
                        Sort            = sort++,
                        AdjustQuantity  = d.OutQuantity,
                        NewAccountPrice = d.AccountPrice.GetValueOrDefault(),
                        OldAccountPrice = d.Book.AccountPrice.GetValueOrDefault(),
                        BookID          = d.BookID,
                        ReceiptHeader   = priceAdjustReceipt,
                        Book            = d.Book
                    });
                }
                DbSession.PriceAdjustReceipts.Add(priceAdjustReceipt, false);
            }

            DbSession.SaveChanges();
        }
Пример #20
0
 public void UpdateBookStock(BookStock bookstock)
 {
     dalbs.UpdateBookStock(bookstock);
 }
Пример #21
0
 /// <summary>
 /// Atualizar um BookStock
 /// </summary>
 /// <param name="bookStockUpdated">Informar o BookStock atualizado</param>
 public void Update(BookStock bookStockUpdated) => _booksStock.Save(bookStockUpdated);
Пример #22
0
 /// <summary>
 /// Adicionar um BookStock e atualizar a data do estoque.
 /// </summary>
 /// <param name="newBookStock"></param>
 public void Add(BookStock newBookStock)
 {
     newBookStock.StockUpdated = DateTime.Now;
     _booksStock.Insert(newBookStock);
 }
Пример #23
0
 public void Should_Throw_Exception_If_Json_Format_Invalid() =>
 Assert.ThrowsException <InvalidJsonFormatException>(() => BookStock.ValidateJsonFormat(InvalidCatalog, catalogSchema));
 public ActionResult <BookStock> Post([FromBody] BookStock bookStock)
 {
     _context.Add(bookStock);
     _context.SaveChanges();
     return(CreatedAtAction(nameof(Get), new { id = bookStock.Id }, bookStock));
 }
Пример #25
0
        public void AuditReceipt(Guid receiptId, Guid auditId)
        {
            var period = DbSession.SysVariables.All.SingleOrDefault(v => v.Name.Equals("NY"));

            if (period == null)
            {
                throw new Exception("取不到当前年月");
            }

            if (!period.Value.Equals(DateTime.Now.ToString("yyMM")))
            {
                throw new Exception("系统年月与当前年月不符,审核失败");
            }

            var receiptToAudit = DbSession.InStockReceipts.All.Where(r => !r.IsAudited && r.ID == receiptId).SingleOrDefault();

            if (receiptToAudit == null)
            {
                throw new Exception("不存在该单据");
            }

            receiptToAudit.NO        = GetNO(DateTime.Now.ToString("yyMMdd"));
            receiptToAudit.AuditDate = DateTime.Now;
            receiptToAudit.IsAudited = true;
            receiptToAudit.AuditedBy = DbSession.Users.All.Where(u => u.ID == auditId).Single();
            foreach (var d in receiptToAudit.Details)
            {
                d.AccountPrice = d.Book.AccountPrice;
                var     stock         = d.Book.Stock;
                int     entryQuantity = d.EntryQuantity;
                decimal entryMoney    = ((decimal)d.EntryQuantity) * d.Book.AccountPrice.GetValueOrDefault();
                if (stock == null)
                {
                    stock = new BookStock
                    {
                        ID                  = Guid.NewGuid(),
                        StockOf             = d.Book,
                        PriorPeriodQuantity = 0,
                        PriorPeriodMoney    = 0,
                        EntryQuantity       = entryQuantity,
                        EntryMoney          = entryMoney,
                        OutQuantity         = 0,
                        OutMoney            = 0,
                        StocktakeQuantity   = 0,
                        StocktakeMoney      = 0,
                        DamagedQuantity     = 0,
                        DamagedMoney        = 0,
                        AdjustMoney         = 0,
                        ThisPeriodQuantity  = entryQuantity,
                        ThisPeriodMoney     = entryMoney
                    };
                    DbSession.BookStocks.Add(stock, false);
                }
                else
                {
                    stock.EntryQuantity      += entryQuantity;
                    stock.EntryMoney         += entryMoney;
                    stock.ThisPeriodQuantity += entryQuantity;
                    stock.ThisPeriodMoney    += entryMoney;
                }
            }

            DbSession.SaveChanges();
        }
Пример #26
0
 public BookStock Add(BookStock stock)
 {
     return(_context.BookStocks.Add(stock).Entity);
 }