Пример #1
0
        // code moved to cash bonus controller
        ///// <summary>
        ///// Method to get cash draw buttons
        ///// </summary>
        ///// <returns>Cash draw buttons</returns>
        //public CashDrawButton GetCashBonusDrawButtons(string userCode, out ErrorMessage error)
        //{
        //    var dateStart = DateTime.Now;
        //    _performancelog.Debug($"Start,CashManager,GetCashDrawButtons,{string.Empty},{dateStart:hh.mm.ss.ffffff}");
        //    var offSet = _policyManager.LoadStoreInfo().OffSet;
        //    error = new ErrorMessage();
        //    var user = _loginManager.GetExistingUser(userCode);
        //    if (!Convert.ToBoolean(_policyManager.GetPol("U_TILLDRAW", user)))
        //    {
        //        MessageType temp_VbStyle3 = (int)MessageType.Exclamation + MessageType.OkOnly;
        //        error.MessageStyle = _resourceManager.CreateMessage(offSet, 38, 56, null, temp_VbStyle3);
        //        error.StatusCode = System.Net.HttpStatusCode.Forbidden;
        //        _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
        //        return null;
        //    }

        //    var cashDrawButton = new CashDrawButton
        //    {
        //        Coins = _cashService.GetCoins(),
        //        Bills = _cashService.GetBills()
        //    };
        //    _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

        //    return cashDrawButton;
        //}


        /// <summary>
        /// Print cash draw
        /// </summary>
        /// <param name="cashDraw">Cash draw</param>
        /// <param name="userCode"></param>
        /// <param name="copies">Copies</param>
        /// <param name="errorMessage"></param>
        /// <returns></returns>
        public FileStream CompleteCashDraw(CashDrawButton cashDraw, string userCode, out int copies,
                                           out ErrorMessage errorMessage)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,CashManager,GetCashDrawButtons,{string.Empty},{dateStart:hh.mm.ss.ffffff}");
            copies       = _policyManager.CashDrawReceiptCopies;
            errorMessage = new ErrorMessage();
            var message = string.Empty;
            var till    = _tillService.GetTill(cashDraw.TillNumber);

            if (till == null)
            {
                message = "Till does not exists";
            }

            if (cashDraw.Amount <= 0)
            {
                message = "Invalid Cash Drop Amount";
            }

            if (!string.IsNullOrEmpty(message))
            {
                errorMessage.MessageStyle = new MessageStyle
                {
                    Message = message
                };
                errorMessage.StatusCode = System.Net.HttpStatusCode.BadRequest;
                _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(null);
            }
            var isInvalidCash     = false;
            var isInvalidQuantity = false;

            var cashDrawButtons = GetCashDrawButtons(userCode, out errorMessage);

            if (!string.IsNullOrEmpty(errorMessage.MessageStyle.Message))
            {
                _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(null);
            }

            ValidateCoins(cashDraw, ref isInvalidCash, ref isInvalidQuantity, cashDrawButtons);
            ValidateBills(cashDraw, ref isInvalidCash, ref isInvalidQuantity, cashDrawButtons);

            if (isInvalidCash)
            {
                message = "Invalid Cash or Bill";
            }

            if (isInvalidQuantity)
            {
                message = "Invalid Cash or Bill Quantity";
            }

            if (!string.IsNullOrEmpty(message))
            {
                errorMessage.MessageStyle = new MessageStyle
                {
                    Message = message
                };
                errorMessage.StatusCode = System.Net.HttpStatusCode.BadRequest;
                _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(null);
            }

            //print receipt
            var reasonType = ReasonType.CashDraw;
            var reason     = _reasonService.GetReturnReason(cashDraw.DrawReason, (char)reasonType);

            if (_policyManager.DRAW_REASON && reason == null)
            {
                errorMessage.MessageStyle = new MessageStyle
                {
                    Message = "Invalid Reason"
                };
                errorMessage.StatusCode = System.Net.HttpStatusCode.BadRequest;
                _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(null);
            }

            var draw = new CashDraw
            {
                TillNumber = cashDraw.TillNumber,
                DrawDate   = DateTime.Now,
                TotalValue = (float)cashDraw.Amount,
                User       = userCode.ToUpper(),
                Reason     = cashDraw.DrawReason
            };

            // add values to cash draw
            _cashService.AddCashDraw(draw);

            //update till
            if (till != null)
            {
                till.Cash = till.Cash + cashDraw.Amount;
                _tillService.UpdateTill(till);
                _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(_receiptManager.Print_Draw(till, cashDraw.RegisterNumber, userCode, cashDraw.Coins,
                                                  cashDraw.Bills, reason, cashDraw.Amount));
            }
            return(null);
        }