コード例 #1
0
        public HttpResponseMessage ApplySpecialPrice([FromBody] SpecialPriceCheckModel model)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,PriceCheckController,ApplySpecialPrice,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");

            ErrorMessage        error;
            string              userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }

            var specialPrice = new SpecialPriceCheck
            {
                RegularPrice     = model.RegularPrice,
                RegisterNumber   = model.RegisterNumber,
                StockCode        = model.StockCode,
                TillNumber       = model.TillNumber,
                SaleNumber       = model.SaleNumber,
                Fromdate         = model.Fromdate,
                IsEndDate        = model.IsEndDate,
                PerDollarChecked = model.PerDollarChecked,
                PriceType        = model.PriceType,
                Todate           = model.Todate,
                GridPrices       = (from priceGrd in model.GridPrices
                                    select new Entities.PriceGrid
                {
                    Column1 = priceGrd.Column1,
                    Column2 = priceGrd.Column2,
                    Column3 = priceGrd.Column3
                }).ToList()
            };

            var result = _priceCheckManager.ApplySpecialPrice(specialPrice, userCode, out error);

            _performancelog.Debug($"End,PriceCheckController,ApplySpecialPrice,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            if (!string.IsNullOrEmpty(error?.MessageStyle?.Message))
            {
                var statusCode = error.StatusCode == 0 ? HttpStatusCode.BadRequest : error.StatusCode;
                return(Request.CreateResponse(
                           statusCode,
                           new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }
            return(Request.CreateResponse(HttpStatusCode.OK, result));
        }
コード例 #2
0
        /// <summary>
        /// Apply Special Price
        /// </summary>
        /// <param name="priceCheck">Price check</param>
        /// <param name="userCode">User code</param>
        /// <param name="error">Error</param>
        /// <returns>Stock price check</returns>
        public StockPriceCheck ApplySpecialPrice(SpecialPriceCheck priceCheck, string userCode, out ErrorMessage error)
        {
            if (priceCheck.RegularPrice > 9999.99)
            {
                priceCheck.RegularPrice = 9.99;
            }
            var stockItem = _stockService.GetStockItem(priceCheck.StockCode);

            if (stockItem == null)
            {
                var offSet = _policyManager.LoadStoreInfo().OffSet;
                error = new ErrorMessage
                {
                    MessageStyle = _resourceManager.CreateMessage(offSet, 39, 91, priceCheck.StockCode)
                };
                return(null);
            }
            var  vendorId          = stockItem.Vendor;
            bool activeVendorPrice = _stockService.IsActiveVendorPrice(priceCheck.StockCode, vendorId);

            _stockService.DeletePreviousPrices(priceCheck.StockCode, priceCheck.PriceType, activeVendorPrice, vendorId);

            if (!IsValidPricingInput(priceCheck.PriceType, priceCheck.GridPrices, out error))
            {
                return(null);
            }


            foreach (PriceGrid priceGrid in priceCheck.GridPrices)
            {
                switch (priceCheck.PriceType[0].ToString())
                {
                case "S":
                    if (Convert.ToDouble(priceGrid.Column1) > 9999.99)
                    {
                        priceGrid.Column1 = "9.99";
                    }
                    break;

                case "F":
                    if (Convert.ToDouble(priceGrid.Column2) > 9999.99)
                    {
                        priceGrid.Column2 = "9.99";
                    }
                    break;

                case "I":
                    if (Convert.ToDouble(priceGrid.Column3) > 9999.99)
                    {
                        priceGrid.Column3 = "9.99";
                    }
                    break;

                case "X":
                    if (Convert.ToDouble(priceGrid.Column2) > 9999.99)
                    {
                        priceGrid.Column2 = "9.99";
                    }
                    break;

                default:
                    if (Convert.ToDouble(priceGrid.Column1) > 9999.99)
                    {
                        priceGrid.Column1 = "9.99";
                    }
                    ;
                    break;
                }
            }



            _stockService.AddUpdateSpecialPrice(priceCheck.StockCode, activeVendorPrice, ref vendorId, priceCheck.PriceType[0].ToString(),
                                                priceCheck.GridPrices, priceCheck.Fromdate, priceCheck.Todate, priceCheck.PerDollarChecked, priceCheck.IsEndDate);

            double price = 0;

            _stockService.AddUpdateRegularPrice(priceCheck.StockCode, ref vendorId, ref price, priceCheck.RegularPrice);

            _stockService.TrackPriceChange(priceCheck.StockCode, price, priceCheck.RegularPrice, "PC", 1, userCode, vendorId);

            var      result   = GetStockPriceDetails(priceCheck.StockCode, priceCheck.TillNumber, priceCheck.SaleNumber, priceCheck.RegisterNumber, userCode, out error);
            Register register = new Register();

            _mainManager.SetRegister(ref register, priceCheck.RegisterNumber);
            if (register.Customer_Display)
            {
                result.CustomerDisplay = _mainManager.DisplayMsgLcd(register,
                                                                    _mainManager.FormatLcdString(register, result.Description,
                                                                                                 result.RegularPriceText), "");
            }
            return(result);
        }