/// <summary>
        /// Apply Regular Price
        /// </summary>
        /// <param name="priceCheck"></param>
        /// <param name="userCode">User code</param>
        /// <param name="error">Error</param>
        /// <returns>Stock price check</returns>
        public StockPriceCheck ApplyRegularPrice(RegularPriceCheck priceCheck,
                                                 string userCode, out ErrorMessage error)
        {
            if (priceCheck.RegularPrice > 9999.99)
            {
                priceCheck.RegularPrice = 9.99;
            }
            double price     = 0;
            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, "R", activeVendorPrice, vendorId);

            _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);
        }
Exemple #2
0
        public HttpResponseMessage ApplyRegularPrice([FromBody] RegularPriceCheckModel model)
        {
            var dateStart = DateTime.Now;

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

            ErrorMessage        error;
            string              userCode;
            HttpResponseMessage httpResponseMessage;

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

            var regularPrice = new RegularPriceCheck
            {
                RegularPrice   = model.RegularPrice,
                RegisterNumber = model.RegisterNumber,
                StockCode      = model.StockCode,
                TillNumber     = model.TillNumber,
                SaleNumber     = model.SaleNumber
            };

            var result = _priceCheckManager.ApplyRegularPrice(regularPrice, userCode, out error);

            _performancelog.Debug($"End,PriceCheckController,ApplyRegularPrice,{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));
        }