예제 #1
0
        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);
        }
예제 #2
0
 public void SupplyProduct(SupplyProductVM obj)
 {
     _productOperationService.Supply(obj);
 }