예제 #1
0
        // To Keep up-to-Date with Movements and sales
        public void UpdateProductStock(InnerMovementDTO dto)
        {
            var productInStockMinus =
                new ProductStockDalFacade().GetProductStockByPlaceAndProduct(dto.FromWorkPlaceId, dto.ProductId);

            if (dto.Quantity > productInStockMinus.Quantity)
            {
                throw new ArgumentOutOfRangeException(
                          $"Not Enough Product ({productInStockMinus.ProductId}-{productInStockMinus.ProductName}) in ProductStock to complete transaction");
            }

            productInStockMinus.Quantity -= dto.Quantity;
            new ProductStockDalFacade().Update(productInStockMinus);

            var productInStockAdd = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(dto.ToWorkPlaceId, dto.ProductId);

            if (productInStockAdd == null)
            {
                AddProductStock(dto);
            }
            else
            {
                productInStockAdd.Quantity += dto.Quantity;
                new ProductStockDalFacade().Update(productInStockAdd);
            }
        }
        public void Update(InnerMovementDTO dto)
        {
            var elementToUpdate = GetInnerMovement(dto.Id ?? 0);

            elementToUpdate.Quantity    = dto.Quantity;
            elementToUpdate.TotalPrice  = dto.TotalPrice;
            elementToUpdate.MoveDate    = dto.MoveDate;
            elementToUpdate.UpdatedDate = DateTime.Now;
            db.SubmitChanges();
        }
예제 #3
0
        //
        private static void AddProductStock(InnerMovementDTO dto)
        {
            var productStock = new ProductStockDTO()
            {
                WorkPlaceId = dto.ToWorkPlaceId,
                ProductId   = dto.ProductId,
                Quantity    = dto.Quantity,
            };

            new ProductStockDalFacade().Add(productStock);
        }
        public void Add(InnerMovementDTO dto)
        {
            var elementToAdd = new InnerMovement(dto.Id, dto.MoveDate, dto.ProductId, dto.Quantity, dto.FromWorkPlaceId,
                                                 dto.ToWorkPlaceId)
            {
                CreatedDate = DateTime.Now.Date,
                GroupId     = GetRandomGroupId(),
                TotalPrice  = dto.TotalPrice,
            };

            db.InnerMovements.InsertOnSubmit(elementToAdd);
            db.SubmitChanges();
        }
예제 #5
0
        public void Update(InnerMovementDTO dto, int userId)
        {
            var inMovement         = new InnerMovementDalFacade().GetInnerMovement(dto.Id.Value);
            var diff               = dto.Quantity - inMovement.Quantity; // should-Be - was
            var productInStockFrom = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(dto.FromWorkPlaceId, dto.ProductId);

            var productInStockTo = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(dto.ToWorkPlaceId, dto.ProductId);

            if (diff != 0 && productInStockFrom.Quantity > diff && (productInStockTo.Quantity + diff) >= 0)
            {
                productInStockFrom.Quantity -= diff;// dto.Quantity - inMovement.Quantity;
                new ProductStockDalFacade().Update(productInStockFrom);

                productInStockTo.Quantity += diff;
                new ProductStockDalFacade().Update(productInStockTo);
            }
            else if (diff == 0)
            {
            }
            else
            {
                throw new ArgumentOutOfRangeException($"Not Enough Product ({dto.ProductId}-{dto.ProductName}) in ProductStock to complete transaction.");
            }

            var quantity       = inMovement.Quantity - dto.Quantity;
            var incomeProducts = new List <IncomeProductDTO>();

            incomeProducts.Add(new IncomeProductDTO()
            {
                ProductId = dto.ProductId,
                Quantity  = quantity
            });
            var incomeDTO = new IncomeDTO()
            {
                FromWorkplaceId = dto.FromWorkPlaceId,
                ToWorkplaceId   = dto.ToWorkPlaceId,
                IncomeProducts  = incomeProducts,
                IsProductStock  = false,
                UserId          = userId
            };

            new IncomeDalFacade().AddIncome(incomeDTO);
            new InnerMovementDalFacade().Update(dto);
        }
 public HttpResponseMessage Update(InnerMovementDTO dto)
 {
     try
     {
         var userId = AuthHelper.GetUserIdFromClaims(User.Identity as ClaimsIdentity);
         new InnerMovementBL().Update(dto, userId);
         return(Request.CreateResponse(HttpStatusCode.OK, true));
     }
     catch (ArgumentOutOfRangeException ex)
     {
         LogManager.Instance.Error(ex);
         return(Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message));
     }
     catch (Exception ex)
     {
         LogManager.Instance.Error(ex);
         return(Request.CreateResponse(HttpStatusCode.InternalServerError, false));
     }
 }
예제 #7
0
        public void Add(InnerMovementDTO dto, int userId)
        {
            new ProductStockBL().UpdateProductStock(dto);

            new InnerMovementDalFacade().Add(dto);
            var incomeProducts = new List <IncomeProductDTO>();

            incomeProducts.Add(new IncomeProductDTO()
            {
                ProductId = dto.ProductId,
                Quantity  = dto.Quantity
            });
            var incomeDTO = new IncomeDTO()
            {
                FromWorkplaceId = dto.FromWorkPlaceId,
                ToWorkplaceId   = dto.ToWorkPlaceId,
                IncomeProducts  = incomeProducts,
                IsProductStock  = false,
                UserId          = userId
            };

            new IncomeDalFacade().AddIncome(incomeDTO);
        }