public Sale Create(ShopContext db, SaleCreateVM obj, int userId) { var shop = _shopService.ShopByUserId(db, userId); if (shop == null) { throw new Exception("Текущий пользователь не привязан к магазину"); } if (obj.CashlessSum > 0 && obj.MoneyWorkerId == null) { throw new Exception("Вы не выбрали счет для безналичного перевода, проведите продажу заново"); } var sum = obj.CashSum + obj.CashlessSum; var sale = db.Sales.Add(new Sale() { Date = DateTime.Now.AddHours(3), AdditionalComment = obj.AdditionalComment, Comment = obj.Comment, ShopId = shop.Id, PartnerId = obj.PartnerId, Sum = sum, CashSum = obj.CashSum, CashlessSum = obj.CashlessSum, Discount = obj.Discount, Payment = obj.Payment, SaleType = obj.Payment != true ? SaleType.DefferedSale : SaleType.Sale, ForRussian = obj.ForRussian }).Entity; db.SaveChanges(); if (obj.Payment) { _moneyOperationService.SalePayment(db, obj.CashSum, obj.CashlessSum, sale, shop.Id, obj.MoneyWorkerId); } else { if (obj.CashlessSum > 0) { db.SaleInformations.Add(new SaleInformation() { MoneyWorkerForIncomeId = obj.MoneyWorkerId ?? throw new Exception(""), SaleId = sale.Id, SaleType = SaleType.DefferedSale });
public IActionResult RealizationPost([FromBody] RealizationVM json) { try { var managerId = _postgresContext.Managers.FirstOrDefault(x => x.Name == json.Manager)?.Id ?? throw new Exception("Не указан менеджен"); SaleCreateVM saleCreate = new SaleCreateVM() { UserId = json.UserId, MoneyWorkerId = json.MoneyWorkerId, Discount = json.Discount, AdditionalComment = json.AdditionalComment, Comment = json.Comment, PaymentType = json.Cashless ? PaymentType.Cashless : PaymentType.Cash, CashSum = json.CashSum, CashlessSum = json.CashlessSum, Sum = json.Sum, Products = json.Products, PartnerId = json.Buyer == "Обычный покупатель" ? null : _db.Partners.First(p => p.Title == json.Buyer)?.Id, Payment = json.Payment, ForRussian = json.ForRussian }; var createdSale = _saleService.Create(_db, saleCreate, json.UserId); _postgresContext.SaleManagersOld.Add( new SaleManagerOld(managerId, createdSale.Id, DateTime.Now.AddHours(3))); _postgresContext.SaveChanges(); return(RedirectToAction("CheckPrint", new { saleId = createdSale.Id, operationSum = json.CashSum + json.CashlessSum })); } catch (Exception e) { return(BadRequest(new { message = e.Message })); } }
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 })); } }