spree_core 4.1.9 → 4.1.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 735a7c4cad6166518bb05cc45fcc5a2f303e1b4a11f5ec9ae1e17a6df5916142
4
- data.tar.gz: a62c2b5fec62e7c9bf7971198f3805c573785c9e9768d88c61b3ae89b578c31d
3
+ metadata.gz: c6076d4a3647fbf0b2a1a72578b5cd9336181f4b50c40bda5f7dcffab9806e4a
4
+ data.tar.gz: 663b00f1b45448020c4274925264c31ef11363fc6bd4561db5eff1f8897c4b5f
5
5
  SHA512:
6
- metadata.gz: 25b68dc35a114eaa937dc25fc06576065d8b56baa23d4839cdfa401c08fb5f85638e65d924cba0f9f84b9585761eb3855cf938811c288578968aee2d0ef3e2bb
7
- data.tar.gz: 67270a8f7d20847ddcced170c3ebb82b419d89ffff202905d4a9161b13cd526a954b67367bf925133822a0903e5a7a41e81f2f11e4abadf7d9b375b5bdf54793
6
+ metadata.gz: 235b59d743b4d580fe4b9e2a16d082a39285bccbee99f9fea6615c65e0e760a9134a0267ed9def3d9bac5fa76974416127dbdaeeac52865b8578b6926a5d2c65
7
+ data.tar.gz: 2bdc502c7b9134df69893818a1e230bd546ff895f8d0733e4ff380dbb2a8c4be9eccfe0acc356c8e618ad2d75d75f74228955af8961231617e00e0ec19e6ec27
@@ -0,0 +1,17 @@
1
+ module Spree
2
+ module Addresses
3
+ class Find
4
+ def initialize(scope:, params:)
5
+ @scope = scope
6
+ end
7
+
8
+ def execute
9
+ scope
10
+ end
11
+
12
+ private
13
+
14
+ attr_reader :scope
15
+ end
16
+ end
17
+ end
@@ -11,7 +11,8 @@ module Spree
11
11
  :checkout_remove_store_credit_service, :checkout_get_shipping_rates_service,
12
12
  :coupon_handler, :country_finder, :current_order_finder, :credit_card_finder,
13
13
  :completed_order_finder, :order_sorter, :cart_compare_line_items_service, :collection_paginator, :products_sorter,
14
- :products_finder, :taxon_finder, :line_item_by_variant_finder, :cart_estimate_shipping_rates_service
14
+ :products_finder, :taxon_finder, :line_item_by_variant_finder, :cart_estimate_shipping_rates_service,
15
+ :account_create_address_service, :account_update_address_service, :address_finder
15
16
  ].freeze
16
17
 
17
18
  attr_accessor *INJECTION_POINTS
@@ -59,9 +60,14 @@ module Spree
59
60
  # coupons
60
61
  # TODO: we should split this service into 2 seperate - Add and Remove
61
62
  @coupon_handler = 'Spree::PromotionHandler::Coupon'
63
+
64
+ # account
65
+ @account_create_address_service = 'Spree::Account::Addresses::Create'
66
+ @account_update_address_service = 'Spree::Account::Addresses::Update'
62
67
  end
63
68
 
64
69
  def set_default_finders
70
+ @address_finder = 'Spree::Addresses::Find'
65
71
  @country_finder = 'Spree::Countries::Find'
66
72
  @current_order_finder = 'Spree::Orders::FindCurrent'
67
73
  @completed_order_finder = 'Spree::Orders::FindComplete'
@@ -0,0 +1,39 @@
1
+ module Spree
2
+ module Account
3
+ module Addresses
4
+ class Base
5
+ prepend Spree::ServiceModule::Base
6
+
7
+ private
8
+
9
+ attr_accessor :country
10
+
11
+ def fill_country_and_state_ids(params)
12
+ replace_country_iso_with_id(params)
13
+ fill_state_id(params)
14
+ end
15
+
16
+ def replace_country_iso_with_id(params)
17
+ iso = params[:country_iso]
18
+ return params unless iso.present?
19
+
20
+ country = Spree::Country.by_iso(iso)
21
+ params[:country_id] = country&.id
22
+ params.delete(:country_iso)
23
+ params
24
+ end
25
+
26
+ def fill_state_id(params)
27
+ state_name = params[:state_name]
28
+ return params unless state_name.present?
29
+
30
+ country ||= Spree::Country.find(params[:country_id]) if params[:country_id].present?
31
+ return params unless country
32
+
33
+ params[:state_id] = country.states.find_by(name: state_name)&.id
34
+ params
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,18 @@
1
+ module Spree
2
+ module Account
3
+ module Addresses
4
+ class Create < ::Spree::Account::Addresses::Base
5
+ def call(user:, address_params:)
6
+ fill_country_and_state_ids(address_params)
7
+
8
+ address = user.addresses.new(address_params)
9
+ if address.save
10
+ success(address)
11
+ else
12
+ failure(address)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module Spree
2
+ module Account
3
+ module Addresses
4
+ class Update < ::Spree::Account::Addresses::Base
5
+ def call(address:, address_params:)
6
+ address_params[:country_id] ||= address.country_id
7
+ fill_country_and_state_ids(address_params)
8
+
9
+ if address.update(address_params)
10
+ success(address)
11
+ else
12
+ failure(address)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -4,8 +4,12 @@ module Spree
4
4
  prepend Spree::ServiceModule::Base
5
5
 
6
6
  def call(order:, params:, permitted_attributes:, request_env:)
7
- params = replace_country_iso_with_id(params, 'ship') if address_with_country_iso_present?(params, 'ship')
8
- params = replace_country_iso_with_id(params, 'bill') if address_with_country_iso_present?(params, 'bill')
7
+ ship_changed = address_with_country_iso_present?(params, 'ship')
8
+ bill_changed = address_with_country_iso_present?(params, 'bill')
9
+ params = replace_country_iso_with_id(params, 'ship') if ship_changed
10
+ params = replace_country_iso_with_id(params, 'bill') if bill_changed
11
+ order.state = 'address' if (ship_changed || bill_changed) && order.has_checkout_step?('address')
12
+ order.state = 'delivery' if selected_shipping_rate_present?(params) && order.has_checkout_step?('delivery')
9
13
  return success(order) if order.update_from_params(params, permitted_attributes, request_env)
10
14
 
11
15
  failure(order)
@@ -20,6 +24,13 @@ module Spree
20
24
  true
21
25
  end
22
26
 
27
+ def selected_shipping_rate_present?(params)
28
+ shipments_attributes = params.dig(:order, :shipments_attributes)
29
+ return false unless shipments_attributes
30
+
31
+ shipments_attributes.any? { |s| s.dig(:selected_shipping_rate_id) }
32
+ end
33
+
23
34
  def replace_country_iso_with_id(params, address_kind = 'ship')
24
35
  country_id = Spree::Country.by_iso(params[:order]["#{address_kind}_address_attributes"].fetch(:country_iso))&.id
25
36
 
@@ -1,5 +1,5 @@
1
1
  module Spree
2
2
  def self.version
3
- '4.1.9'
3
+ '4.1.10'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.9
4
+ version: 4.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-28 00:00:00.000000000 Z
11
+ date: 2020-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemerchant
@@ -406,6 +406,7 @@ files:
406
406
  - app/assets/images/noimage/small.png
407
407
  - app/assets/javascripts/spree.js
408
408
  - app/controllers/spree/base_controller.rb
409
+ - app/finders/spree/addresses/find.rb
409
410
  - app/finders/spree/countries/find.rb
410
411
  - app/finders/spree/credit_cards/find.rb
411
412
  - app/finders/spree/line_items/find_by_variant.rb
@@ -618,6 +619,9 @@ files:
618
619
  - app/presenters/spree/variant_presenter.rb
619
620
  - app/presenters/spree/variants/option_types_presenter.rb
620
621
  - app/presenters/spree/variants/options_presenter.rb
622
+ - app/services/spree/account/addresses/base.rb
623
+ - app/services/spree/account/addresses/create.rb
624
+ - app/services/spree/account/addresses/update.rb
621
625
  - app/services/spree/cart/add_item.rb
622
626
  - app/services/spree/cart/create.rb
623
627
  - app/services/spree/cart/estimate_shipping_rates.rb
@@ -1085,10 +1089,10 @@ licenses:
1085
1089
  - BSD-3-Clause
1086
1090
  metadata:
1087
1091
  bug_tracker_uri: https://github.com/spree/spree/issues
1088
- changelog_uri: https://github.com/spree/spree/releases/tag/v4.1.9
1092
+ changelog_uri: https://github.com/spree/spree/releases/tag/v4.1.10
1089
1093
  documentation_uri: https://guides.spreecommerce.org/
1090
- source_code_uri: https://github.com/spree/spree/tree/v4.1.9
1091
- post_install_message:
1094
+ source_code_uri: https://github.com/spree/spree/tree/v4.1.10
1095
+ post_install_message:
1092
1096
  rdoc_options: []
1093
1097
  require_paths:
1094
1098
  - lib
@@ -1104,7 +1108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1104
1108
  version: 1.8.23
1105
1109
  requirements: []
1106
1110
  rubygems_version: 3.1.2
1107
- signing_key:
1111
+ signing_key:
1108
1112
  specification_version: 4
1109
1113
  summary: The bare bones necessary for Spree.
1110
1114
  test_files: []