Sha256: e5b355f2e718d5c430a124a91f8510bc3972ad4c8be15288699ffd51d1ac90ef

Contents?: true

Size: 1.59 KB

Versions: 21

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

EXCLUDED_US_STATES = ['UM', 'AS', 'MP', 'VI', 'PR', 'GU'].freeze
EXCLUDED_CN_STATES = ['HK', 'MO', 'TW'].freeze

def state_level(country, subregion)
  country.states.where(
    name: subregion.name,
    abbr: subregion.code
  ).first_or_create
end

def province_level(country, subregion)
  subregion.subregions.each do |province|
    country.states.where(
      name: province.name,
      abbr: province.code
    ).first_or_create
  end
end

Spree::Country.where(states_required: true).each do |country|
  carmen_country = Carmen::Country.named(country.name)
  next unless carmen_country

  carmen_country.subregions.each do |subregion|
    if carmen_country.alpha_2_code == 'US'
      # Produces 50 states, one postal district (Washington DC)
      # and 3 APO's as you would expect to see on any good U.S. states list.
      next if EXCLUDED_US_STATES.include?(subregion.code)

      state_level(country, subregion)
    elsif carmen_country.alpha_2_code == 'CA' || carmen_country.alpha_2_code == 'MX'
      # Force Canada and Mexico to use state-level data import from Carmen Gem
      # else we pull in a subset of provinces that are not common at checkout.
      state_level(country, subregion)
    elsif carmen_country.alpha_2_code == 'CN'
      # Removes 3 "States" from that list that are also listed as Countries,
      # Hong Kong, Taiwan and Macao
      next if EXCLUDED_CN_STATES.include?(subregion.code)

      state_level(country, subregion)
    elsif subregion.subregions?
      province_level(country, subregion)
    else
      state_level(country, subregion)
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
spree_core-4.2.7 db/default/spree/states.rb
spree_core-4.3.3 db/default/spree/states.rb
spree_core-4.2.6 db/default/spree/states.rb
spree_core-4.3.2 db/default/spree/states.rb
spree_core-4.3.1 db/default/spree/states.rb
spree_core-4.3.0 db/default/spree/states.rb
spree_core-4.3.0.rc3 db/default/spree/states.rb
spree_core-4.3.0.rc2 db/default/spree/states.rb
spree_core-4.3.0.rc1 db/default/spree/states.rb
spree_core-4.2.5 db/default/spree/states.rb
spree_core-4.2.4 db/default/spree/states.rb
spree_core-4.2.3.1 db/default/spree/states.rb
spree_core-4.2.3 db/default/spree/states.rb
spree_core-4.2.2 db/default/spree/states.rb
spree_core-4.2.1 db/default/spree/states.rb
spree_core-4.2.0 db/default/spree/states.rb
spree_core-4.2.0.rc5 db/default/spree/states.rb
spree_core-4.2.0.rc4 db/default/spree/states.rb
spree_core-4.2.0.rc3 db/default/spree/states.rb
spree_core-4.2.0.rc2 db/default/spree/states.rb