Class: Spree::CartonMailer

Inherits:
BaseMailer
  • Object
show all
Defined in:
app/mailers/spree/carton_mailer.rb

Instance Method Summary collapse

Methods inherited from BaseMailer

#from_address, #mail, #money

Instance Method Details

#shipped_email(options, deprecated_options = {}) ⇒ Mail::Message

Send an email to customers to notify that an individual carton has been shipped. If a carton contains items from multiple orders then this will be called with that carton one time for each order.

Note: The signature of this method has changed. The new (non-deprecated) signature is:

def shipped_email(carton:, order:, resend: false)

Parameters:

  • carton (Spree::Carton)

    the shipped carton

  • order (Spree::Order)

    one of the orders with items in the carton

  • resend (Boolean)

    indicates whether the email is a ‘resend’ (e.g. triggered by the admin “resend” button)

Returns:

  • (Mail::Message)


16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/mailers/spree/carton_mailer.rb', line 16

def shipped_email(options, deprecated_options={})
  if options.is_a?(Integer)
    ActiveSupport::Deprecation.warn "Calling shipped_email with a carton_id is DEPRECATED. Instead use CartonMailer.shipped_email(order: order, carton: carton)"
    @carton = Carton.find(options)
    @order = @carton.orders.first # assume first order
    @manifest = @carton.manifest # use the entire manifest, since we don't know the precise order
    options = deprecated_options
  else
    @order = options.fetch(:order)
    @carton = options.fetch(:carton)
    @manifest = @carton.manifest_for_order(@order)
  end
  options =  {resend: false}.merge(options)
  @store = @order.store
  subject = (options[:resend] ? "[#{Spree.t(:resend).upcase}] " : '')
  subject += "#{@store.name} #{Spree.t('shipment_mailer.shipped_email.subject')} ##{@order.number}"
  mail(to: @order.email, from: from_address(@store), subject: subject)
end