protected void BindGiftCertificate()
        {
            Name.Text = _GiftCertificate.Name;

            if (string.IsNullOrEmpty(_GiftCertificate.SerialNumber))
            {
                Serial.Text = "Not Assigned Yet.";
            }
            else
            {
                Serial.Text = _GiftCertificate.SerialNumber;
            }

            Balance.Text = _GiftCertificate.Balance.LSCurrencyFormat("lc");

            // SHOW LAST DESCRIPTION
            if (_GiftCertificate.Transactions != null && _GiftCertificate.Transactions.Count > 0)
            {
                GiftCertificateTransaction gct = _GiftCertificate.Transactions[_GiftCertificate.Transactions.Count - 1];
                Description.Text = gct.Description + " (Modified at " + gct.TransactionDate.ToString() + ")";
            }

            if (_GiftCertificate.IsExpired())
            {
                Expires.Text = "Already expired at " + _GiftCertificate.ExpirationDate.ToString();
            }
            else if (_GiftCertificate.ExpirationDate == null || _GiftCertificate.ExpirationDate.Equals(DateTime.MinValue))
            {
                Expires.Text = "N/A";
            }
            else
            {
                Expires.Text = _GiftCertificate.ExpirationDate.ToString();
            }
        }
Example #2
0
        /// <summary>
        /// Submits an authorization request
        /// </summary>
        /// <param name="authorizeRequest">The authorization request</param>
        /// <returns>Transaction that represents the result of the authorization request</returns>
        public override Transaction DoAuthorize(AuthorizeTransactionRequest authorizeRequest)
        {
            Transaction transaction = new Transaction();

            transaction.PaymentGatewayId = this.PaymentGatewayId;
            //always use authorize capture.
            transaction.TransactionType = TransactionType.AuthorizeCapture;

            string          serialNumber = authorizeRequest.Payment.AccountData;
            GiftCertificate gc           = GiftCertificateDataSource.LoadForSerialNumber(serialNumber);

            string errorMessage = string.Empty;

            if (gc == null)
            {
                errorMessage = "No gift certificate found with given serial number.";
            }
            else if (gc.IsExpired())
            {
                errorMessage = "Gift certificate is expired.";
            }
            else if (gc.Balance < authorizeRequest.Amount)
            {
                errorMessage = "Gift certificate does not have enough balance to complete this transaction.";
            }
            else
            {
                LSDecimal newAmount = gc.Balance - authorizeRequest.Amount;
                gc.Balance = newAmount;
                GiftCertificateTransaction trans = new GiftCertificateTransaction();
                trans.TransactionDate = LocaleHelper.LocalNow;
                trans.Amount          = authorizeRequest.Amount;
                trans.OrderId         = authorizeRequest.Payment.OrderId;
                trans.Description     = string.Format("An amount of {0:lc} used in purchase. Remaining balance is {1:lc}.", authorizeRequest.Amount, newAmount);
                gc.Transactions.Add(trans);
                gc.Save();
            }

            if (string.IsNullOrEmpty(errorMessage))
            {
                transaction.TransactionStatus = TransactionStatus.Successful;
                transaction.ResponseCode      = "0";
                transaction.ResponseMessage   = "SUCCESS";
                transaction.Amount            = authorizeRequest.Amount;
            }
            else
            {
                transaction.TransactionStatus = TransactionStatus.Failed;
                transaction.ResponseCode      = "1";
                transaction.ResponseMessage   = errorMessage;
                transaction.Amount            = authorizeRequest.Amount;
            }

            return(transaction);
        }
        protected bool IsDeleteable(int giftCertificateId)
        {
            GiftCertificate gc = GiftCertificateDataSource.Load(giftCertificateId);

            if (HasSerialNumber(gc) && !gc.IsExpired())
            {
                // IF ZERO BALANCE WITH ACTIVE GIFT CERTIFICATE
                if (gc.Balance == 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(true);
            }
        }
Example #4
0
 protected void GiftCertificateButton_Click(object sender, EventArgs e)
 {
     if (Page.IsValid)
     {
         bool checkOut = true;
         if (CheckingOut != null)
         {
             // CREATE THE PAYMENT OBJECT
             Payment payment        = GetPayment();
             CheckingOutEventArgs c = new CheckingOutEventArgs(payment);
             CheckingOut(this, c);
             checkOut = !c.Cancel;
         }
         if (checkOut)
         {
             Basket basket = AbleContext.Current.User.Basket;
             GiftCertificateNumber.Text = StringHelper.StripHtml(GiftCertificateNumber.Text);
             GiftCertificate gc = GiftCertificateDataSource.LoadForSerialNumber(GiftCertificateNumber.Text);
             if (gc == null)
             {
                 GiftCertPaymentErrors.Text = "This is not a valid gift certificate : " + GiftCertificateNumber.Text;
             }
             else if (gc.Balance <= 0)
             {
                 GiftCertPaymentErrors.Text = "There is no balance left for this gift certificate : " + GiftCertificateNumber.Text;
             }
             else if (gc.IsExpired())
             {
                 GiftCertPaymentErrors.Text = "This gift certificate is expired : " + GiftCertificateNumber.Text;
             }
             else if (AlreadyInUse(basket, gc))
             {
                 GiftCertPaymentErrors.Text = "This gift certificate is already applied to your basket : " + GiftCertificateNumber.Text;
             }
             else
             {
                 // process this gift certificate
                 decimal    basketTotal = basket.Items.TotalPrice();
                 BasketItem bitem       = new BasketItem();
                 bitem.Basket        = basket;
                 bitem.OrderItemType = OrderItemType.GiftCertificatePayment;
                 bitem.Price         = -(gc.Balance > basketTotal ? basketTotal : gc.Balance);
                 bitem.Quantity      = 1;
                 bitem.Name          = gc.Name;
                 bitem.Sku           = gc.SerialNumber;
                 basket.Items.Add(bitem);
                 basket.Save();
                 decimal remBalance = basket.Items.TotalPrice();
                 if (remBalance > 0)
                 {
                     GiftCertPaymentErrors.Text = string.Format("A payment of {0} will be made using gift certificate {1}. It will leave a balance of {2} for this order. Please make additional payments.", gc.Balance.LSCurrencyFormat("lc"), GiftCertificateNumber.Text, remBalance.LSCurrencyFormat("lc"));
                 }
                 else
                 {
                     //payment done. process checkout
                     ICheckoutService checkoutService  = AbleContext.Resolve <ICheckoutService>();
                     CheckoutRequest  checkoutRequest  = new CheckoutRequest(basket);
                     CheckoutResponse checkoutResponse = checkoutService.ExecuteCheckout(checkoutRequest);
                     if (checkoutResponse.Success)
                     {
                         if (CheckedOut != null)
                         {
                             CheckedOut(this, new CheckedOutEventArgs(checkoutResponse));
                         }
                         Response.Redirect(AbleCommerce.Code.NavigationHelper.GetReceiptUrl(checkoutResponse.Order.OrderNumber));
                     }
                     else
                     {
                         IList <string> warningMessages = checkoutResponse.WarningMessages;
                         if (warningMessages.Count == 0)
                         {
                             warningMessages.Add("The order could not be submitted at this time.  Please try again later or contact us for assistance.");
                         }
                         if (CheckedOut != null)
                         {
                             CheckedOut(this, new CheckedOutEventArgs(checkoutResponse));
                         }
                     }
                 }
             }
             if (!string.IsNullOrEmpty(GiftCertPaymentErrors.Text))
             {
                 GiftCertErrorsPanel.Visible = true;
             }
         }
     }
 }