Sha256: 77386c4091d021ecf1489de87d51cc32e9923cbf6660374971f15a7a69f80bc4
Contents?: true
Size: 1.25 KB
Versions: 31
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}".safe_constantize 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_later 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.current, ) end end end
Version data entries
31 entries across 31 versions & 1 rubygems