public IActionResult DefferedSaleFromStock([FromBody] DefferedSaleFromStockVM sale)
        {
            try
            {
                var supplierId = _db.Suppliers.FirstOrDefault(x => x.Title == sale.Supplier)?.Id
                                 ?? throw new Exception("Не указан поставщик");

                var managerId = _postgresContext.Managers.FirstOrDefault(x => x.Name == sale.Manager)?.Id
                                ?? throw new Exception("Не указан менеджер");

                var user = _userService.All().FirstOrDefault(x => x.Id == sale.UserId);

                SaleCreateVM saleCreate = new SaleCreateVM()
                {
                    UserId      = sale.UserId,
                    Discount    = sale.Discount,
                    CashSum     = sale.CashSum,
                    CashlessSum = sale.CashlessSum,
                    Comment     = sale.Comment,
                    Sum         = sale.Sum,
                    Products    = sale.Products,
                    PartnerId   = sale.Buyer == "Обычный покупатель"
                        ? null
                        : _partnerService.All().First(p => p.Title == sale.Buyer)?.Id,
                    SaleType   = SaleType.DefferedSaleFromStock,
                    ForRussian = sale.ForRussian
                };

                var createdSale = _saleService.CreatePostPayment(_db, saleCreate, sale.UserId);

                _db.SaleInformations.Add(new SaleInformation()
                {
                    Sale     = createdSale,
                    SaleType = SaleType.DefferedSaleFromStock
                });

                if (sale.CashSum > 0)
                {
                    _infoMoneyService.Create(new InfoMoney()
                    {
                        MoneyWorkerId      = _shopService.All().FirstOrDefault(x => x.Id == user.ShopId).Id,
                        Sum                = sale.CashSum,
                        Sale               = createdSale,
                        PaymentType        = PaymentType.Cash,
                        MoneyOperationType = MoneyOperationType.Sale
                    });
                }

                if (sale.CashlessSum > 0)
                {
                    _infoMoneyService.Create(new InfoMoney()
                    {
                        MoneyWorkerId      = sale.MoneyWorkerId,
                        Sum                = sale.CashlessSum,
                        Sale               = createdSale,
                        PaymentType        = PaymentType.Cashless,
                        MoneyOperationType = MoneyOperationType.Sale
                    });
                }

                _db.SaveChanges();


                var saleFromStockOld = new SaleFromStockOld()
                {
                    SaleId     = createdSale.Id,
                    SupplierId = supplierId,
                    Products   = sale.Products.Select(x =>
                                                      new SoldProductFromStockOld()
                    {
                        ProcurementCost = x.ProcurementCost,
                        ProductId       = x.Id
                    }).ToList()
                };


                _postgresContext.SalesFromStockOld.Add(saleFromStockOld);

                _postgresContext.SaleManagersOld.Add(
                    new SaleManagerOld(managerId, createdSale.Id, DateTime.Now.AddHours(3)));

                _postgresContext.SaveChanges();


                return(RedirectToAction("CheckPrint",
                                        new { saleId = createdSale.Id, operationSum = sale.CashSum + sale.CashlessSum }));
            }
            catch (Exception e)
            {
                return(BadRequest(new { message = e.Message }));
            }
        }
        public IActionResult SaleFromStock([FromBody] SaleFromStockVM json)
        {
            try
            {
                var supplierId = _db.Suppliers.FirstOrDefault(x => x.Title == json.Supplier)?.Id
                                 ?? throw new Exception("Не указан поставщик");

                var managerId = _postgresContext.Managers.FirstOrDefault(x => x.Name == json.Manager)?.Id
                                ?? throw new Exception("Не указан менеджер");

                SaleCreateVM saleCreate = new SaleCreateVM()
                {
                    UserId            = json.UserId,
                    Discount          = json.Discount,
                    AdditionalComment = json.AdditionalComment,
                    Comment           = json.Comment,
                    Sum         = json.Sum,
                    CashSum     = json.Cash,
                    CashlessSum = json.Cashless,
                    Products    = json.Products,
                    PartnerId   = json.Buyer == "Обычный покупатель"
                        ? null
                        : _partnerService.All().First(p => p.Title == json.Buyer)?.Id,
                    SaleType   = SaleType.SaleFromStock,
                    ForRussian = json.ForRussian
                };

                var createdSale = _saleService.CreatePostPayment(_db, saleCreate, json.UserId);
                var shop        = _shopService.ShopByUserId(_db, json.UserId);

                _db.SaleInformations.Add(new SaleInformation()
                {
                    Sale = createdSale,
                    MoneyWorkerForIncomeId         = shop.Id,
                    MoneyWorkerForCashlessIncomeId = json.MoneyWorkerIdForCashlessIncome == 0
                        ? null
                        : json.MoneyWorkerIdForCashlessIncome,
                    SaleType = SaleType.SaleFromStock
                });

                _db.SaveChanges();


                var saleFromStockOld = new SaleFromStockOld()
                {
                    SaleId     = createdSale.Id,
                    SupplierId = supplierId,
                    Products   = json.Products.Select(x =>
                                                      new SoldProductFromStockOld()
                    {
                        ProcurementCost = x.ProcurementCost,
                        ProductId       = x.Id
                    }).ToList()
                };


                _postgresContext.SalesFromStockOld.Add(saleFromStockOld);

                _postgresContext.SaleManagersOld.Add(
                    new SaleManagerOld(managerId, createdSale.Id, DateTime.Now.AddHours(3)));

                _postgresContext.SaveChanges();


                return(RedirectToAction("CheckPrint", new { saleId = createdSale.Id, operationSum = json.Cash + json.Cashless }));
            }
            catch (Exception e)
            {
                return(BadRequest(new { message = e.Message }));
            }
        }