public void Supply(SupplyProductVM obj) { var product = _productService.All().FirstOrDefault(x => x.Title == obj.Name && x.ShopId == obj.ShopId); if (product == null) { var productForCopy = _productService.All().FirstOrDefault(x => x.Id == obj.ProductId); product = _productService.Create(new Product() { Title = productForCopy.Title, Code = productForCopy.Code, Reserv = productForCopy.Reserv, BookingAmount = 0, Cost = productForCopy.Cost, CategoryId = productForCopy.CategoryId, ShopId = obj.ShopId, }); } var supplyHistory = _supplyHistoryService.Create(new SupplyHistory()); InfoProduct info; if (obj.SupplierId != 0) { info = new InfoProduct() { Amount = obj.Amount, Date = DateTime.Now.AddHours(3), ProductId = product.Id, ShopId = product.ShopId, SupplierId = obj.SupplierId, Type = InfoProductType.Supply, SupplyHistoryId = supplyHistory.Id }; var supplyProduct = new SupplyProduct() { ProductId = product.Id, SupplierId = obj.SupplierId, TotalAmount = obj.Amount, RealizationAmount = obj.Realization == SupplyType.ForRealization ? obj.Amount : 0, AdditionalCost = obj.AdditionalCost / obj.Amount, ProcurementCost = obj.ProcurementCost / obj.Amount, FinalCost = (obj.ProcurementCost / obj.Amount) + (obj.AdditionalCost / obj.Amount), StockAmount = obj.Amount, SupplyHistoryId = supplyHistory.Id }; _postgresContext.ProductOperations.Add(new ProductOperation( product.Id, obj.Amount, DateTime.Now.AddHours(3), obj.ProcurementCost / obj.Amount, obj.Realization == SupplyType.ForRealization, obj.SupplierId, StorageType.Shop)); _postgresContext.SaveChanges(); _supplyProductService.Create(supplyProduct); if (obj.Realization == SupplyType.DeferredPayment) { _deferredSupplyProductService.Create(new DeferredSupplyProduct() { Date = obj.Date, SupplyProductId = supplyProduct.Id }); } } else { var supply = _supplyProductService.Create(new SupplyProduct() { ProductId = product.Id, TotalAmount = obj.Amount, RealizationAmount = obj.Realization == SupplyType.ForRealization ? obj.Amount : 0, AdditionalCost = obj.AdditionalCost / obj.Amount, ProcurementCost = obj.ProcurementCost / obj.Amount, FinalCost = (obj.ProcurementCost / obj.Amount) + (obj.AdditionalCost / obj.Amount), StockAmount = obj.Amount, SupplyHistoryId = supplyHistory.Id }); info = new InfoProduct() { Amount = obj.Amount, Date = DateTime.Now.AddHours(3), ProductId = product.Id, ShopId = product.ShopId, Type = InfoProductType.Supply, SupplyHistoryId = supplyHistory.Id, }; } _infoProductService.Create(info); }
public void SupplyProduct(SupplyProductVM obj) { _productOperationService.Supply(obj); }