示例#1
0
        public JsonResult ProductLog_Insert(AddProductLogRequest request)
        {
            GeneralResponse response = new GeneralResponse();

            #region Access Check

            bool hasPermission = GetEmployee().IsGuaranteed("ProductLog_Transfer");
            if (!hasPermission)
            {
                response.ErrorMessages.Add("AccessDenied");
                return(Json(response, JsonRequestBehavior.AllowGet));
            }

            #endregion

            response = _productLogService.AddProductLog(request, GetEmployee().ID);

            return(Json(response, JsonRequestBehavior.AllowGet));
        }
示例#2
0
        public GeneralResponse AddProductLog(AddProductLogRequest request, Guid CreateEmployeeID)
        {
            GeneralResponse response = new GeneralResponse();

            try
            {
                ProductLog productLog = new ProductLog();


                //if (request.IO == -1)
                //    productLog.UnitsIO = -request.DisplayUnitsIO;
                //else
                //    productLog.UnitsIO = request.DisplayUnitsIO;


                productLog.ID = Guid.NewGuid();

                productLog.CreateDate        = PersianDateTime.Now;
                productLog.CreateEmployee    = _employeeRepository.FindBy(CreateEmployeeID);
                productLog.Note              = request.Note;
                productLog.Closed            = request.Closed;
                productLog.InputSerialNumber = GetNewSerialNumber;
                productLog.LogDate           = request.LogDate;
                productLog.Product           = this._productRepository.FindBy(request.ProductID);

                productLog.ProductSerialFrom  = request.ProductSerialFrom;
                productLog.ProductSerialTo    = request.ProductSerialTo;
                productLog.PurchaseBillNumber = request.PurchaseBillNumber;
                productLog.PurchaseDate       = request.PurchaseDate;
                productLog.PurchaseUnitPrice  = request.PurchaseUnitPrice;
                productLog.SellerName         = request.SellerName;

                productLog.RowVersion = 1;


                #region Validation

                if (productLog.GetBrokenRules().Count() > 0)
                {
                    foreach (BusinessRule businessRule in productLog.GetBrokenRules())
                    {
                        response.ErrorMessages.Add(businessRule.Rule);
                    }

                    return(response);
                }

                #endregion

                Product product = productLog.Product;


                if (request.IO == -1)
                {
                    if (productLog.Product.UnitsInStock < request.DisplayUnitsIO)
                    {
                        response.ErrorMessages.Add("موجودی انبار کافی نیست");
                        return(response);
                    }
                    else
                    {
                        product.UnitsInStock -= request.DisplayUnitsIO;
                        productLog.UnitsIO    = -request.DisplayUnitsIO;
                    }
                }
                else
                {
                    product.UnitsInStock += request.DisplayUnitsIO;
                    productLog.UnitsIO    = request.DisplayUnitsIO;
                }

                //product.UnitsInStock += productLog.UnitsIO;
                _productRepository.Save(product);



                _productLogRepository.Add(productLog);
                _uow.Commit();
            }
            catch (Exception ex)
            {
                response.ErrorMessages.Add(ex.Message);
                if (ex.InnerException != null)
                {
                    response.ErrorMessages.Add(ex.InnerException.Message);
                }
            }

            return(response);
        }