/// <summary>
        /// Increase givex amount
        /// </summary>
        /// <param name="strCardNum">Card number</param>
        /// <param name="amount">Amount</param>
        /// <param name="saleNum">Sale number</param>
        /// <param name="newBalance">New balance</param>
        /// <param name="refNum">Reference number</param>
        /// <param name="userCode">User code</param>
        /// <param name="errorMessage">Error message</param>
        /// <param name="givexReceipt">Givex receipt</param>
        /// <returns>True or false</returns>
        public bool IncreaseGiveX(string strCardNum, float amount, int saleNum, ref decimal newBalance, ref string refNum,
                                  string userCode, out ErrorMessage errorMessage, out GiveXReceiptType givexReceipt)
        {
            var dateStart = DateTime.Now;

            Performancelog.Debug($"Start,GivexClientManager,IncreaseGiveX,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");
            givexReceipt = new GiveXReceiptType();
            var returnValue = false;

            errorMessage = new ErrorMessage();
            var response = new Variables.GiveXResponseType();

            var capValue = new object[3];

            newBalance = 0;
            refNum     = "";
            if (strCardNum.Trim() == "")
            {
                return(false);
            }

            modStringPad.InitGiveXRequest();
            Variables.GX_Request.ServiceType = "Increment";

            Variables.GX_Request.UserID = Convert.ToString(_givexPolicies["GIVEX_USER"]);

            Variables.GX_Request.UserPassword = Convert.ToString(_givexPolicies["GIVEX_PASS"]);

            Variables.GX_Request.OperatorID       = Convert.ToString(userCode); // "ALL"
            Variables.GX_Request.GivexNumber      = strCardNum.Trim();
            Variables.GX_Request.Language         = "0";
            Variables.GX_Request.Amount           = (amount).ToString(CultureInfo.InvariantCulture);
            Variables.GX_Request.TransactionCode  = (saleNum).ToString();
            Variables.GX_Request.TransmissionDate = DateAndTime.Today.ToString("MM/dd/yyyy");
            Variables.GX_Request.TransmissionTime = DateAndTime.TimeOfDay.ToString("hh:mm:ss");
            Variables.GX_Request.TerminalID       = "ALL";
            var strSend = modStringPad.GetGiveXRequest();

            if (SendGiveXRequest(strSend, "Increment," + (saleNum), "Increment", ref response, out errorMessage))
            {
                if (response.Result != "Approved")
                {
                    if (!string.IsNullOrEmpty(response.TransactionReference))
                    {
                        if (response.TransactionReference.Trim() == "")
                        {
                            capValue[1] = "";
                        }
                        else
                        {
                            capValue[1] = "(" + response.TransactionReference.Trim() + ") ";
                        }
                    }
                    else
                    {
                        capValue[1] = "";
                    }

                    capValue[2] = strCardNum.Trim();

                    // Call DisplayMsgForm("Invalid response {}from GiveX TPS, CANNOT increase the amount for GiveX card {}.", 99)

                    errorMessage.MessageStyle = _resourceManager.DisplayMsgForm(_offSet, 3270, 99, capValue, CriticalOkMessageType);
                    return(false);
                }
                if (response.GivexNumber != strCardNum.Trim())
                {
                    capValue[1] = "";

                    capValue[2] = strCardNum.Trim();
                    //Call DisplayMsgForm("Invalid response {}from GiveX TPS, CANNOT increase the amount for GiveX card {}.", 99)
                    errorMessage.MessageStyle = _resourceManager.DisplayMsgForm(_offSet, 3270, 99, null, CriticalOkMessageType);
                    return(false);
                }
                newBalance  = decimal.Parse(response.CertificateBalance);
                refNum      = response.TransactionReference;
                returnValue = true;

                modStringPad.InitGiveXReceipt();
                Variables.GX_Receipt.Date = DateAndTime.Today.ToString("MM/dd/yyyy");
                Variables.GX_Receipt.Time = DateAndTime.TimeOfDay.ToString("hh:mm:ss");

                Variables.GX_Receipt.UserID       = Convert.ToString(_givexPolicies["GIVEX_PASS"]);
                Variables.GX_Receipt.TranType     = 5; //Increment
                Variables.GX_Receipt.SeqNum       = (saleNum).ToString();
                Variables.GX_Receipt.CardNum      = response.GivexNumber;
                Variables.GX_Receipt.ExpDate      = string.Format(response.ExpiryDate, "yyMM");
                Variables.GX_Receipt.Balance      = (float)(Conversion.Val(response.CertificateBalance));
                Variables.GX_Receipt.SaleAmount   = amount;
                Variables.GX_Receipt.PointBalance = (float)(Conversion.Val(response.PointsBalance));
                Variables.GX_Receipt.ResponseCode = response.Result;

                givexReceipt = new GiveXReceiptType
                {
                    Date         = DateAndTime.Today.ToString("MM/dd/yyyy"),
                    Time         = DateAndTime.TimeOfDay.ToString("hh:mm:ss"),
                    UserID       = Convert.ToString(_givexPolicies["GIVEX_PASS"]),
                    TranType     = 5,//Increment
                    SeqNum       = (saleNum).ToString(),
                    CardNum      = response.GivexNumber,
                    ExpDate      = string.Format(response.ExpiryDate, "yyMM"),
                    Balance      = (float)(Conversion.Val(response.CertificateBalance)),
                    SaleAmount   = amount,
                    PointBalance = (float)(Conversion.Val(response.PointsBalance)),
                    ResponseCode = response.Result
                };
            }
            Performancelog.Debug($"End,GivexClientManager,IncreaseGiveX,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(returnValue);
        }
        // Feb 25, 2009: Nicolette moved here this function from modGlobalFunctions module
        // It is called only in this form, so there is no reason to have it public
        // Also, in order to fix the GiveX issue (click or scroll when GiveX is processed
        // messes up other Tenders_Renamed) this function has to access boolCardProcessing variable
        // that is a private variable to this form, so I would have had to make boolCardProcessing
        // public if the function has not been moved
        /// <summary>
        /// Method to redeem givex
        /// </summary>
        /// <param name="userCode">User code</param>
        /// <param name="strCardNum">Card number</param>
        /// <param name="amount">Amount</param>
        /// <param name="securityCode">Security code</param>
        /// <param name="saleNum">Sale number</param>
        /// <param name="newBalance">New balance</param>
        /// <param name="refNum">Reference number</param>
        /// <param name="expDate">Expiry date</param>
        /// <param name="result">Result</param>
        /// <param name="errorMessage">Error message</param>
        /// <param name="givexReceipt">Givex receipt</param>
        /// <returns>Trur or false</returns>
        public bool RedeemGiveX(string userCode, string strCardNum, float amount, string securityCode,
                                int saleNum, ref decimal newBalance, ref string refNum, ref string expDate,
                                ref string result, out ErrorMessage errorMessage, out GiveXReceiptType givexReceipt)
        {
            errorMessage = new ErrorMessage();
            givexReceipt = new GiveXReceiptType();
            string strSend  = "";
            var    response = new Variables.GiveXResponseType();
            var    capValue = new object[3];

            var returnValue = false;

            newBalance = 0;
            refNum     = "";
            if (string.IsNullOrEmpty(strCardNum))
            {
                return(false);
            }

            modStringPad.InitGiveXRequest();
            Variables.GX_Request.ServiceType      = "Redemption";
            Variables.GX_Request.UserID           = Convert.ToString(_givexPolicies["GIVEX_USER"]);
            Variables.GX_Request.UserPassword     = Convert.ToString(_givexPolicies["GIVEX_PASS"]);
            Variables.GX_Request.OperatorID       = Convert.ToString(userCode); // "ALL"
            Variables.GX_Request.GivexNumber      = strCardNum.Trim();
            Variables.GX_Request.Language         = "0";
            Variables.GX_Request.Amount           = (amount).ToString();
            Variables.GX_Request.TransactionCode  = (saleNum).ToString();
            Variables.GX_Request.SecurityCode     = securityCode.Trim();
            Variables.GX_Request.TransmissionDate = DateAndTime.Today.ToString("MM/dd/yyyy");
            Variables.GX_Request.TransmissionTime = DateAndTime.TimeOfDay.ToString("hh:mm:ss");
            Variables.GX_Request.TerminalID       = "ALL";
            strSend = modStringPad.GetGiveXRequest();

            if (SendGiveXRequest(strSend, "Redemption," + saleNum, "Redemption", ref response,
                                 out errorMessage))
            {
                if (response.Result != "Approved")
                {
                    if (response.TransactionReference.Trim() == "")
                    {
                        capValue[1] = "";
                    }
                    else
                    {
                        capValue[1] = "(" + response.TransactionReference.Trim() + ") ";
                    }
                    capValue[2] = strCardNum.Trim();

                    errorMessage.MessageStyle = _resourceManager.DisplayMsgForm(_offSet, 3271, 99, capValue, 0);
                    return(false);
                }
                if (response.GivexNumber != strCardNum.Trim())
                {
                    capValue[1] = "";
                    capValue[2] = strCardNum.Trim();

                    errorMessage.MessageStyle = _resourceManager.DisplayMsgForm(_offSet, 3271, 99, capValue, 0);
                }
                else
                {
                    newBalance  = (decimal)(Conversion.Val(response.CertificateBalance));
                    refNum      = response.TransactionReference;
                    expDate     = response.ExpiryDate != "****" ? string.Format("yyMM", response.ExpiryDate) : response.ExpiryDate;
                    result      = response.Result;
                    returnValue = true;

                    modStringPad.InitGiveXReceipt();
                    Variables.GX_Receipt.Date         = DateAndTime.Today.ToString("MM/dd/yyyy");
                    Variables.GX_Receipt.Time         = DateAndTime.TimeOfDay.ToString("hh:mm:ss");
                    Variables.GX_Receipt.UserID       = Convert.ToString(_givexPolicies["GIVEX_USER"]);
                    Variables.GX_Receipt.TranType     = 6; //Redemption
                    Variables.GX_Receipt.SeqNum       = (saleNum).ToString();
                    Variables.GX_Receipt.CardNum      = response.GivexNumber;
                    Variables.GX_Receipt.ExpDate      = response.ExpiryDate != "****" ? string.Format("yyMM", response.ExpiryDate) : response.ExpiryDate;
                    Variables.GX_Receipt.Balance      = (float)(Conversion.Val(response.CertificateBalance));
                    Variables.GX_Receipt.SaleAmount   = amount;
                    Variables.GX_Receipt.PointBalance = (float)(Conversion.Val(response.PointsBalance));
                    Variables.GX_Receipt.ResponseCode = response.Result;
                }
            }
            givexReceipt = new GiveXReceiptType
            {
                Date         = DateAndTime.Today.ToString("MM/dd/yyyy"),
                Time         = DateAndTime.TimeOfDay.ToString("hh:mm:ss"),
                UserID       = Convert.ToString(_givexPolicies["GIVEX_USER"]),
                TranType     = 6, //Redemption
                SeqNum       = (saleNum).ToString(),
                CardNum      = response.GivexNumber,
                ExpDate      = response.ExpiryDate != "****" ? string.Format("yyMM", response.ExpiryDate) : response.ExpiryDate,
                Balance      = (float)(Conversion.Val(response.CertificateBalance)),
                SaleAmount   = amount,
                PointBalance = (float)(Conversion.Val(response.PointsBalance)),
                ResponseCode = response.Result
            };
            return(returnValue);
        }
        /// <summary>
        /// Activate GiveX
        /// </summary>
        /// <param name="strCardNum">Card number</param>
        /// <param name="amount">Amount</param>
        /// <param name="saleNum">Sale number</param>
        /// <param name="refNum">Reference number</param>
        /// <param name="userCode">User code</param>
        /// <param name="errorMessage">Error message</param>
        /// <param name="givexReceipt">Givex receipt</param>
        /// <returns>true/false</returns>
        public bool ActivateGiveX(string strCardNum, float amount, int saleNum, ref string refNum,
                                  string userCode, out ErrorMessage errorMessage, out GiveXReceiptType givexReceipt)
        {
            var dateStart = DateTime.Now;

            Performancelog.Debug($"Start,GivexClientManager,ActivateGiveX,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");
            var returnValue = false;

            errorMessage = new ErrorMessage();
            var response = new Variables.GiveXResponseType();

            givexReceipt = new GiveXReceiptType();
            refNum       = "";
            if (string.IsNullOrEmpty(strCardNum))
            {
                return(false);
            }

            modStringPad.InitGiveXRequest();
            Variables.GX_Request.ServiceType = "Activation";

            Variables.GX_Request.UserID = Convert.ToString(_givexPolicies["GIVEX_USER"]);

            Variables.GX_Request.UserPassword = Convert.ToString(_givexPolicies["GIVEX_PASS"]);

            Variables.GX_Request.OperatorID       = Convert.ToString(userCode); // "ALL"
            Variables.GX_Request.GivexNumber      = strCardNum.Trim();
            Variables.GX_Request.Language         = "0";
            Variables.GX_Request.Amount           = (amount).ToString(CultureInfo.InvariantCulture);
            Variables.GX_Request.TransactionCode  = (saleNum).ToString();
            Variables.GX_Request.TransmissionDate = DateAndTime.Today.ToString("MM/dd/yyyy");
            Variables.GX_Request.TransmissionTime = DateAndTime.TimeOfDay.ToString("hh:mm:ss");
            Variables.GX_Request.TerminalID       = "ALL";
            var strSend = modStringPad.GetGiveXRequest();

            if (SendGiveXRequest(strSend, "Activation," + (saleNum), "Activation", ref response, out errorMessage))
            {
                if (response.Result != "Approved")
                {
                    errorMessage.MessageStyle = _resourceManager.DisplayMsgForm(_offSet, response.TransactionReference.Trim() != "" ? 3265 : 3264, 99, response.TransactionReference, CriticalOkMessageType);
                    errorMessage.StatusCode   = HttpStatusCode.NotAcceptable;
                    return(false);
                }
                if (response.GivexNumber != strCardNum.Trim())
                {
                    //Call DisplayMsgForm("Invalid response from GiveX TPS, Gift Certificate is canceled!", 99)
                    errorMessage.MessageStyle = _resourceManager.DisplayMsgForm(_offSet, 3264, 99,
                                                                                response.TransactionReference, CriticalOkMessageType);
                }
                else
                {
                    returnValue = true;
                    refNum      = response.TransactionReference;



                    modStringPad.InitGiveXReceipt();
                    Variables.GX_Receipt.Date = DateAndTime.Today.ToString("MM/dd/yyyy");
                    Variables.GX_Receipt.Time = DateAndTime.TimeOfDay.ToString("hh:mm:ss");

                    Variables.GX_Receipt.UserID       = Convert.ToString(_givexPolicies["GIVEX_USER"]);
                    Variables.GX_Receipt.TranType     = 1; //Activation
                    Variables.GX_Receipt.SaleNum      = saleNum;
                    Variables.GX_Receipt.SeqNum       = response.TransactionReference;
                    Variables.GX_Receipt.CardNum      = response.GivexNumber;
                    Variables.GX_Receipt.SaleAmount   = float.Parse(response.Amount);
                    Variables.GX_Receipt.ExpDate      = string.Format(response.ExpiryDate, "yyMM");
                    Variables.GX_Receipt.Balance      = (float)(Conversion.Val(response.CertificateBalance));
                    Variables.GX_Receipt.PointBalance = (float)(Conversion.Val(response.PointsBalance));
                    Variables.GX_Receipt.ResponseCode = response.Result;

                    givexReceipt = new GiveXReceiptType
                    {
                        Date         = DateAndTime.Today.ToString("MM/dd/yyyy"),
                        Time         = DateAndTime.TimeOfDay.ToString("hh:mm:ss"),
                        UserID       = Convert.ToString(_givexPolicies["GIVEX_USER"]),
                        TranType     = 1, //Activation
                        SaleNum      = saleNum,
                        SeqNum       = response.TransactionReference,
                        CardNum      = response.GivexNumber,
                        SaleAmount   = float.Parse(response.Amount),
                        ExpDate      = string.Format(response.ExpiryDate, "yyMM"),
                        Balance      = (float)(Conversion.Val(response.CertificateBalance)),
                        PointBalance = (float)(Conversion.Val(response.PointsBalance)),
                        ResponseCode = response.Result,
                    };
                }
            }
            Performancelog.Debug($"End,GivexClientManager,ActivateGiveX,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(returnValue);
        }