public async Task <ActionResult> PostBills(ExpenseService.DataAccess.Model.Bills bills)
        {
            var newBill = Mapper.MapBills(bills);

            _ = _repo.AddBillAsync(newBill);

            await _repo.SaveAsync();

            return(CreatedAtAction("GetBills", new { id = bills.Id }, bills));
        }
Example #2
0
        public async Task <int> AddSale(SalesCreateViewModel model)
        {
            var bill = new Bill
            {
                shop_id     = model.shopId,
                sum         = model.totalSum,
                report_date = model.reportDate
            };

            try
            {
                var list = new List <Sale>();

                foreach (var p in model.products)
                {
                    var cost  = _costRepo.GetByProdId(p.prodId).FirstOrDefault();
                    var price = _priceRepo.GetPriceByProdId(p.prodId);

                    var sale = new Sale
                    {
                        prod_id = p.prodId,
                        count   = p.count,
                        sum     = p.summ,
                        unit_id = (await _productRepo.GetByIdAsync(p.prodId))?.unit_id,
                        cost    = cost?.value ?? 0,
                        price   = price?.price ?? 0
                    };
                    sale.profit = p.summ - (sale.cost != 0 ? sale.cost * p.count : p.summ);
                    list.Add(sale);
                }

                bill.Sales = list;
            }
            catch (Exception)
            {
                throw new Exception("Не сделан ни один приход по одному из товаров чека.");
            }

            var billId = 0;

            try
            {
                billId = await _billsRepo.AddBillAsync(bill);

                await _strategy.UpdateAverageCost(DAL.Helpers.Direction.Sale, bill);
            }
            catch (Exception)
            {
                throw new Exception("Случилась ошибка при добавлении продажи.");
            }

            return(billId);
        }