/// <summary> /// Cancels the payment. /// </summary> /// <param name="request">The request.</param> /// <returns>A response containing the canceled tender line.</returns> private static VoidPaymentServiceResponse CancelPayment(VoidPaymentServiceRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.TenderLine == null) { throw new PaymentException(PaymentErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest, "request.TenderLine is null."); } if (request.TenderLine.Amount <= 0) { throw new PaymentException(PaymentErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest, "Issued credit memo cannot be voided."); } string orgUnitNumber = request.RequestContext.GetOrgUnit().OrgUnitNumber; var unlockCreditMemoRealtimeRequest = new UnlockCreditMemoRealtimeRequest( request.TenderLine.CreditMemoId, orgUnitNumber, request.RequestContext.GetTerminal().TerminalId); request.RequestContext.Execute <NullResponse>(unlockCreditMemoRealtimeRequest); request.TenderLine.Status = TenderLineStatus.Voided; request.TenderLine.IsVoidable = false; return(new VoidPaymentServiceResponse(request.TenderLine)); }
/// <summary> /// Cancels the payment. /// </summary> /// <param name="request">The request.</param> /// <returns>A response containing the canceled tender line.</returns> private static VoidPaymentServiceResponse CancelPayment(VoidPaymentServiceRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.TenderLine == null) { throw new ArgumentException("request.TenderLine cannot be null."); } if (request.RequestContext == null) { throw new ArgumentException("request.RequestContext cannot be null."); } if (request.Transaction == null) { throw new ArgumentException("request.Transaction cannot be null."); } // Remove redeem reward point lines if (request.Transaction.LoyaltyRewardPointLines != null) { IEnumerable <LoyaltyRewardPointLine> otherLines = request.Transaction.LoyaltyRewardPointLines.Where( l => (l.EntryType != LoyaltyRewardPointEntryType.Redeem && l.EntryType != LoyaltyRewardPointEntryType.Refund)); request.Transaction.LoyaltyRewardPointLines = new Collection <LoyaltyRewardPointLine>(otherLines.ToList()); } request.TenderLine.Status = TenderLineStatus.Voided; request.TenderLine.IsVoidable = false; return(new VoidPaymentServiceResponse(request.TenderLine)); }
/// <summary> /// Cancels the payment. /// </summary> /// <param name="request">The request.</param> /// <returns>A response containing the canceled tender line.</returns> private static VoidPaymentServiceResponse CancelPayment(VoidPaymentServiceRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (!request.TenderLine.IsVoidable) { throw new PaymentException( PaymentErrors.Microsoft_Dynamics_Commerce_Runtime_TenderLineCannotBeVoided, string.Format("Tender line {0} cannot be voided.", request.TenderLine.TenderLineId)); } IRequestHandler paymentService = ResolvePaymentService(request.RequestContext, request.GetType(), request.TenderLine.TenderTypeId); return(request.RequestContext.Runtime.Execute <VoidPaymentServiceResponse>(request, request.RequestContext, paymentService)); }
/// <summary> /// Cancels the payment. /// </summary> /// <param name="request">The request.</param> /// <returns>A response containing the canceled tender line.</returns> private static VoidPaymentServiceResponse CancelPayment(VoidPaymentServiceRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.TenderLine == null) { throw new PaymentException(PaymentErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest, "request.TenderLine is null."); } request.TenderLine.Status = TenderLineStatus.Voided; request.TenderLine.IsVoidable = false; // For customer account payments, there is no extra step needed. return(new VoidPaymentServiceResponse(request.TenderLine)); }
/// <summary> /// Cancels the payment. /// </summary> /// <param name="request">The request.</param> /// <returns>A response containing the canceled tender line.</returns> private static VoidPaymentServiceResponse CancelPayment(VoidPaymentServiceRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.TenderLine == null) { throw new PaymentException(PaymentErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest, "request.TenderLine is null."); } var voidGiftCardPayment = new VoidGiftCardPaymentRealtimeRequest( request.TenderLine.GiftCardId, request.RequestContext.GetPrincipal().ChannelId, request.RequestContext.GetTerminal() == null ? string.Empty : request.RequestContext.GetTerminal().TerminalId); request.RequestContext.Execute <NullResponse>(voidGiftCardPayment); request.TenderLine.Status = TenderLineStatus.Voided; request.TenderLine.IsVoidable = false; return(new VoidPaymentServiceResponse(request.TenderLine)); }