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(); } }
/// <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); } }
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; } } } }