diff --git a/app/assets/stylesheets/admin/shared/icons.scss b/app/assets/stylesheets/admin/shared/icons.scss index 04a3fb74c0..a2de27ba99 100644 --- a/app/assets/stylesheets/admin/shared/icons.scss +++ b/app/assets/stylesheets/admin/shared/icons.scss @@ -16,6 +16,7 @@ } .icon-email:before { @extend .icon-envelope:before } +.icon-resend_authorization_email:before { @extend .icon-envelope:before } .icon-resume:before { @extend .icon-refresh:before } .icon-cancel:before, diff --git a/app/models/spree/credit_card.rb b/app/models/spree/credit_card.rb index 948dcf829d..2a10e78794 100644 --- a/app/models/spree/credit_card.rb +++ b/app/models/spree/credit_card.rb @@ -79,11 +79,17 @@ module Spree end def actions - %w{capture void credit} + %w{capture void credit resend_authorization_email} + end + + def can_resend_authorization_email?(payment) + payment.pending? && payment.cvv_response_message.present? end # Indicates whether its possible to capture the payment def can_capture?(payment) + return false if payment.cvv_response_message.present? + payment.pending? || payment.checkout? end diff --git a/app/models/spree/payment.rb b/app/models/spree/payment.rb index 578b91e3e5..954dfd5472 100644 --- a/app/models/spree/payment.rb +++ b/app/models/spree/payment.rb @@ -121,6 +121,12 @@ module Spree actions end + def resend_authorization_email! + return unless cvv_response_message.present? + + PaymentMailer.authorize_payment(self).deliver + end + def payment_source res = source.is_a?(Payment) ? source.source : source res || payment_method