Sha256: 27a10cbcadee77b4622cd64c67769bea155805c01a2e9879e7cc7d210acfde81
Contents?: true
Size: 1.25 KB
Versions: 14
Compression:
Stored size: 1.25 KB
Contents
module Spree class ShipmentHandler class << self def factory(shipment) # Do we have a specialized shipping-method-specific handler? e.g: # Given shipment.shipping_method = Spree::ShippingMethod::DigitalDownload # do we have Spree::ShipmentHandler::DigitalDownload? if sm_handler = "Spree::ShipmentHandler::#{shipment.shipping_method.name.split('::').last}".constantize rescue false sm_handler.new(shipment) else new(shipment) end end end def initialize(shipment) @shipment = shipment end def perform @shipment.inventory_units.each &:ship! @shipment.process_order_payments if Spree::Config[:auto_capture_on_dispatch] send_shipped_email @shipment.touch :shipped_at update_order_shipment_state end private def send_shipped_email ShipmentMailer.shipped_email(@shipment.id).deliver end def update_order_shipment_state order = @shipment.order new_state = OrderUpdater.new(order).update_shipment_state order.update_columns( shipment_state: new_state, updated_at: Time.now, ) end end end
Version data entries
14 entries across 14 versions & 1 rubygems