Skip to content

Commit dde082e

Browse files
authored
Merge pull request #2792 from jtapia/chore/order_mailer_customization
Allow customizing the order mailer class
2 parents 826d928 + 10c0ed5 commit dde082e

5 files changed

Lines changed: 16 additions & 7 deletions

File tree

backend/app/controllers/spree/admin/orders_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def approve
140140
end
141141

142142
def resend
143-
OrderMailer.confirm_email(@order, true).deliver_later
143+
Spree::Config.order_mailer_class.confirm_email(@order, true).deliver_later
144144
flash[:success] = t('spree.order_email_resent')
145145

146146
redirect_to(spree.edit_admin_order_path(@order))

core/app/models/spree/order.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ def fulfill!
448448
end
449449

450450
def deliver_order_confirmation_email
451-
Spree::OrderMailer.confirm_email(self).deliver_later
451+
Spree::Config.order_mailer_class.confirm_email(self).deliver_later
452452
update_column(:confirmation_delivered, true)
453453
end
454454

@@ -889,7 +889,7 @@ def after_cancel
889889
end
890890

891891
def send_cancel_email
892-
Spree::OrderMailer.cancel_email(self).deliver_later
892+
Spree::Config.order_mailer_class.cancel_email(self).deliver_later
893893
end
894894

895895
def after_resume

core/app/models/spree/order_cancellations.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def short_ship(inventory_units, whodunnit: nil)
4040
end
4141

4242
update_shipped_shipments(inventory_units)
43-
Spree::OrderMailer.inventory_cancellation_email(@order, inventory_units.to_a).deliver_later if Spree::OrderCancellations.send_cancellation_mailer
43+
Spree::Config.order_mailer_class.inventory_cancellation_email(@order, inventory_units.to_a).deliver_later if Spree::OrderCancellations.send_cancellation_mailer
4444
end
4545

4646
@order.recalculate

core/lib/spree/app_configuration.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,15 @@ def default_pricing_options
307307
# @api experimental
308308
class_name_attribute :shipping_rate_tax_calculator_class, default: 'Spree::TaxCalculator::ShippingRate'
309309

310+
# Allows providing your own Mailer for order mailer.
311+
#
312+
# @!attribute [rw] order_mailer_class
313+
# @return [ActionMailer::Base] an object that responds to "confirm_email",
314+
# "cancel_email" and "inventory_cancellation_email"
315+
# (e.g. an ActionMailer with a "confirm_email" method) with the same
316+
# signature as Spree::OrderMailer.confirm_email.
317+
class_name_attribute :order_mailer_class, default: 'Spree::OrderMailer'
318+
310319
# Allows providing your own Mailer for promotion code batch mailer.
311320
#
312321
# @!attribute [rw] promotion_code_batch_mailer_class

core/lib/spree/mailer_previews/order_preview.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@ class OrderPreview < ActionMailer::Preview
66
def confirm
77
order = Order.complete.last
88
raise "Your database needs at least one completed order to render this preview" unless order
9-
OrderMailer.confirm_email(order)
9+
Spree::Config.order_mailer_class.confirm_email(order)
1010
end
1111

1212
def cancel
1313
order = Order.with_state(:canceled).last
1414
raise "Your database needs at least one cancelled order to render this preview" unless order
15-
OrderMailer.cancel_email(order)
15+
Spree::Config.order_mailer_class.cancel_email(order)
1616
end
1717

1818
def inventory_cancellation
1919
order = Spree::Order.joins(:inventory_units).merge(Spree::InventoryUnit.canceled).last
2020
raise "Your database needs at least one order with a canceled inventory unit to render this preview" unless order
21-
OrderMailer.inventory_cancellation_email(order, [order.inventory_units.first])
21+
Spree::Config.order_mailer_class.inventory_cancellation_email(order, [order.inventory_units.first])
2222
end
2323
end
2424
end

0 commit comments

Comments
 (0)