Sha256: 2bfe89a82ab118386b48d823c71eadb989c70aa378e07b5e2f9febb3ac96acf4

Contents?: true

Size: 1.05 KB

Versions: 2

Compression:

Stored size: 1.05 KB

Contents

module Spree
  CheckoutController.class_eval do

    private

    def before_address
      return if @order.bill_address or @order.ship_address

      last_used_bill_address, last_used_ship_address = find_last_used_addresses(@order.email)

      if spree_current_user.respond_to?(:bill_address) && spree_current_user.respond_to?(:ship_address)
        preferred_bill_address, preferred_ship_address = spree_current_user.bill_address, spree_current_user.ship_address
      end

      @order.bill_address ||= preferred_bill_address || last_used_bill_address || Address.default
      @order.ship_address ||= preferred_ship_address || last_used_ship_address || Address.default
    end

    def find_last_used_addresses(email)
      past = Spree::Order.order('id desc').where(email: email).where('state != "cart"').limit(8)
      if order = past.detect(&:bill_address)
        bill_address = order.bill_address.clone if order.bill_address
        ship_address = order.ship_address.clone if order.ship_address
      end
      return bill_address, ship_address
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
spree-last-address-2.0.0 app/controllers/spree/checkout_controller_decorator.rb
spree-last-address-2.1.1 app/controllers/spree/checkout_controller_decorator.rb