spree_core 3.3.6 → 3.4.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/spree/base_helper.rb +17 -18
  3. data/app/helpers/spree/products_helper.rb +5 -5
  4. data/app/models/concerns/spree/calculated_adjustments.rb +4 -3
  5. data/app/models/concerns/spree/default_price.rb +4 -5
  6. data/app/models/concerns/spree/display_money.rb +1 -1
  7. data/app/models/concerns/spree/named_type.rb +1 -1
  8. data/app/models/concerns/spree/ransackable_attributes.rb +5 -6
  9. data/app/models/concerns/spree/user_address.rb +6 -6
  10. data/app/models/concerns/spree/user_methods.rb +3 -3
  11. data/app/models/concerns/spree/user_payment_source.rb +4 -2
  12. data/app/models/concerns/spree/user_reporting.rb +1 -1
  13. data/app/models/spree/ability.rb +3 -3
  14. data/app/models/spree/address.rb +13 -9
  15. data/app/models/spree/adjustable/adjuster/promotion.rb +1 -1
  16. data/app/models/spree/adjustable/adjustments_updater.rb +2 -2
  17. data/app/models/spree/adjustable/promotion_accumulator.rb +6 -4
  18. data/app/models/spree/adjustment.rb +2 -3
  19. data/app/models/spree/app_configuration.rb +5 -6
  20. data/app/models/spree/base.rb +1 -1
  21. data/app/models/spree/calculator/default_tax.rb +4 -5
  22. data/app/models/spree/calculator/flat_percent_item_total.rb +1 -1
  23. data/app/models/spree/calculator/flat_rate.rb +3 -3
  24. data/app/models/spree/calculator/flexi_rate.rb +5 -5
  25. data/app/models/spree/calculator/price_sack.rb +9 -9
  26. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -1
  27. data/app/models/spree/calculator/shipping/flat_rate.rb +3 -3
  28. data/app/models/spree/calculator/shipping/flexi_rate.rb +7 -7
  29. data/app/models/spree/calculator/shipping/per_item.rb +2 -2
  30. data/app/models/spree/calculator/shipping/price_sack.rb +4 -4
  31. data/app/models/spree/calculator/tiered_flat_rate.rb +3 -2
  32. data/app/models/spree/calculator/tiered_percent.rb +4 -3
  33. data/app/models/spree/calculator.rb +4 -4
  34. data/app/models/spree/classification.rb +2 -2
  35. data/app/models/spree/credit_card.rb +1 -1
  36. data/app/models/spree/exchange.rb +4 -5
  37. data/app/models/spree/gateway/bogus.rb +20 -20
  38. data/app/models/spree/gateway/bogus_simple.rb +2 -4
  39. data/app/models/spree/gateway.rb +4 -4
  40. data/app/models/spree/image.rb +3 -3
  41. data/app/models/spree/inventory_unit.rb +30 -30
  42. data/app/models/spree/line_item.rb +7 -9
  43. data/app/models/spree/option_type.rb +1 -1
  44. data/app/models/spree/order/checkout.rb +5 -5
  45. data/app/models/spree/order/currency_updater.rb +1 -4
  46. data/app/models/spree/order/payments.rb +4 -4
  47. data/app/models/spree/order/store_credit.rb +2 -2
  48. data/app/models/spree/order.rb +11 -29
  49. data/app/models/spree/order_contents.rb +6 -5
  50. data/app/models/spree/order_inventory.rb +3 -4
  51. data/app/models/spree/order_updater.rb +13 -14
  52. data/app/models/spree/payment/processing.rb +25 -26
  53. data/app/models/spree/payment.rb +72 -79
  54. data/app/models/spree/payment_capture_event.rb +1 -1
  55. data/app/models/spree/payment_method/check.rb +1 -1
  56. data/app/models/spree/payment_method/store_credit.rb +5 -5
  57. data/app/models/spree/payment_method.rb +7 -7
  58. data/app/models/spree/preferences/configuration.rb +6 -9
  59. data/app/models/spree/preferences/preferable.rb +11 -11
  60. data/app/models/spree/preferences/preferable_class_methods.rb +2 -3
  61. data/app/models/spree/preferences/scoped_store.rb +6 -5
  62. data/app/models/spree/preferences/store.rb +9 -14
  63. data/app/models/spree/price.rb +1 -1
  64. data/app/models/spree/product/scopes.rb +49 -49
  65. data/app/models/spree/product.rb +16 -16
  66. data/app/models/spree/promotion/actions/create_item_adjustments.rb +2 -1
  67. data/app/models/spree/promotion/actions/free_shipping.rb +1 -1
  68. data/app/models/spree/promotion/rules/first_order.rb +7 -6
  69. data/app/models/spree/promotion/rules/item_total.rb +3 -5
  70. data/app/models/spree/promotion/rules/one_use_per_user.rb +1 -2
  71. data/app/models/spree/promotion/rules/option_value.rb +14 -6
  72. data/app/models/spree/promotion/rules/product.rb +4 -4
  73. data/app/models/spree/promotion/rules/taxon.rb +6 -6
  74. data/app/models/spree/promotion/rules/user.rb +3 -3
  75. data/app/models/spree/promotion/rules/user_logged_in.rb +1 -1
  76. data/app/models/spree/promotion.rb +15 -16
  77. data/app/models/spree/promotion_action.rb +1 -1
  78. data/app/models/spree/promotion_handler/cart.rb +3 -2
  79. data/app/models/spree/promotion_handler/free_shipping.rb +1 -3
  80. data/app/models/spree/promotion_handler/page.rb +3 -3
  81. data/app/models/spree/promotion_rule.rb +5 -4
  82. data/app/models/spree/refund.rb +8 -8
  83. data/app/models/spree/reimbursement/credit.rb +1 -1
  84. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -3
  85. data/app/models/spree/reimbursement.rb +4 -8
  86. data/app/models/spree/reimbursement_performer.rb +0 -5
  87. data/app/models/spree/reimbursement_tax_calculator.rb +5 -12
  88. data/app/models/spree/reimbursement_type.rb +2 -2
  89. data/app/models/spree/return_authorization.rb +22 -26
  90. data/app/models/spree/return_item/eligibility_validator/default.rb +3 -3
  91. data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +2 -2
  92. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +2 -2
  93. data/app/models/spree/return_item/eligibility_validator/order_completed.rb +2 -2
  94. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +2 -3
  95. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +2 -2
  96. data/app/models/spree/return_item.rb +15 -19
  97. data/app/models/spree/returns_calculator.rb +1 -2
  98. data/app/models/spree/shipment.rb +14 -35
  99. data/app/models/spree/shipment_handler.rb +10 -12
  100. data/app/models/spree/shipping_calculator.rb +5 -6
  101. data/app/models/spree/shipping_method.rb +3 -3
  102. data/app/models/spree/shipping_rate.rb +2 -2
  103. data/app/models/spree/state.rb +2 -2
  104. data/app/models/spree/stock/availability_validator.rb +1 -1
  105. data/app/models/spree/stock/content_item.rb +2 -3
  106. data/app/models/spree/stock/coordinator.rb +3 -2
  107. data/app/models/spree/stock/differentiator.rb +3 -2
  108. data/app/models/spree/stock/estimator.rb +7 -5
  109. data/app/models/spree/stock/package.rb +5 -5
  110. data/app/models/spree/stock/packer.rb +1 -1
  111. data/app/models/spree/stock/prioritizer.rb +5 -7
  112. data/app/models/spree/stock/quantifier.rb +0 -1
  113. data/app/models/spree/stock/splitter/backordered.rb +2 -4
  114. data/app/models/spree/stock/splitter/base.rb +3 -2
  115. data/app/models/spree/stock/splitter/shipping_category.rb +2 -1
  116. data/app/models/spree/stock_item.rb +1 -1
  117. data/app/models/spree/stock_location.rb +12 -11
  118. data/app/models/spree/stock_movement.rb +1 -3
  119. data/app/models/spree/stock_transfer.rb +1 -1
  120. data/app/models/spree/store.rb +4 -4
  121. data/app/models/spree/store_credit.rb +3 -3
  122. data/app/models/spree/tax_category.rb +1 -1
  123. data/app/models/spree/tax_rate.rb +10 -10
  124. data/app/models/spree/taxon.rb +13 -13
  125. data/app/models/spree/taxonomy.rb +9 -8
  126. data/app/models/spree/validations/db_maximum_length_validator.rb +2 -3
  127. data/app/models/spree/variant.rb +30 -41
  128. data/app/models/spree/zone.rb +10 -10
  129. data/app/validators/db_maximum_length_validator.rb +5 -5
  130. data/config/initializers/acts_as_taggable_on.rb +3 -3
  131. data/config/initializers/assets.rb +1 -1
  132. data/config/initializers/friendly_id.rb +1 -1
  133. data/config/initializers/premailer_assets.rb +1 -1
  134. data/config/locales/en.yml +8 -2
  135. data/db/default/spree/states.rb +1 -0
  136. data/lib/generators/spree/custom_user/custom_user_generator.rb +12 -15
  137. data/lib/generators/spree/install/install_generator.rb +45 -32
  138. data/lib/spree/core/components.rb +3 -3
  139. data/lib/spree/core/controller_helpers/auth.rb +5 -10
  140. data/lib/spree/core/controller_helpers/common.rb +2 -3
  141. data/lib/spree/core/controller_helpers/order.rb +3 -7
  142. data/lib/spree/core/controller_helpers/respond_with.rb +4 -4
  143. data/lib/spree/core/engine.rb +3 -3
  144. data/lib/spree/core/environment/calculators.rb +0 -1
  145. data/lib/spree/core/environment_extension.rb +8 -8
  146. data/lib/spree/core/importer/order.rb +64 -67
  147. data/lib/spree/core/importer/product.rb +10 -9
  148. data/lib/spree/core/product_filters.rb +17 -18
  149. data/lib/spree/core/routes.rb +2 -6
  150. data/lib/spree/core/search/base.rb +62 -59
  151. data/lib/spree/core/version.rb +1 -1
  152. data/lib/spree/core.rb +4 -6
  153. data/lib/spree/i18n.rb +3 -5
  154. data/lib/spree/localized_number.rb +0 -2
  155. data/lib/spree/migrations.rb +8 -7
  156. data/lib/spree/money.rb +3 -7
  157. data/lib/spree/permitted_attributes.rb +2 -2
  158. data/lib/spree/responder.rb +4 -5
  159. data/lib/spree/testing_support/authorization_helpers.rb +3 -3
  160. data/lib/spree/testing_support/caching.rb +5 -5
  161. data/lib/spree/testing_support/capybara_ext.rb +16 -18
  162. data/lib/spree/testing_support/common_rake.rb +8 -9
  163. data/lib/spree/testing_support/controller_requests.rb +6 -6
  164. data/lib/spree/testing_support/extension_rake.rb +2 -3
  165. data/lib/spree/testing_support/factories/address_factory.rb +1 -1
  166. data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -1
  167. data/lib/spree/testing_support/factories/calculator_factory.rb +1 -1
  168. data/lib/spree/testing_support/factories/country_factory.rb +1 -1
  169. data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
  170. data/lib/spree/testing_support/factories/customer_return_factory.rb +1 -3
  171. data/lib/spree/testing_support/factories/image_factory.rb +2 -2
  172. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +1 -1
  173. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
  174. data/lib/spree/testing_support/factories/options_factory.rb +1 -1
  175. data/lib/spree/testing_support/factories/order_factory.rb +1 -1
  176. data/lib/spree/testing_support/factories/payment_factory.rb +1 -1
  177. data/lib/spree/testing_support/factories/payment_method_factory.rb +4 -4
  178. data/lib/spree/testing_support/factories/price_factory.rb +1 -1
  179. data/lib/spree/testing_support/factories/product_factory.rb +1 -1
  180. data/lib/spree/testing_support/factories/product_option_type_factory.rb +1 -1
  181. data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
  182. data/lib/spree/testing_support/factories/promotion_category_factory.rb +1 -2
  183. data/lib/spree/testing_support/factories/promotion_factory.rb +1 -2
  184. data/lib/spree/testing_support/factories/promotion_rule_factory.rb +1 -1
  185. data/lib/spree/testing_support/factories/property_factory.rb +1 -1
  186. data/lib/spree/testing_support/factories/prototype_factory.rb +1 -1
  187. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  188. data/lib/spree/testing_support/factories/reimbursement_factory.rb +2 -2
  189. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +1 -1
  190. data/lib/spree/testing_support/factories/return_authorization_factory.rb +1 -1
  191. data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
  192. data/lib/spree/testing_support/factories/role_factory.rb +1 -1
  193. data/lib/spree/testing_support/factories/shipment_factory.rb +2 -2
  194. data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
  195. data/lib/spree/testing_support/factories/shipping_method_factory.rb +3 -3
  196. data/lib/spree/testing_support/factories/state_factory.rb +1 -1
  197. data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
  198. data/lib/spree/testing_support/factories/stock_item_factory.rb +1 -1
  199. data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -2
  200. data/lib/spree/testing_support/factories/stock_movement_factory.rb +1 -1
  201. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +2 -2
  202. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -1
  203. data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
  204. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +1 -1
  205. data/lib/spree/testing_support/factories/store_factory.rb +1 -1
  206. data/lib/spree/testing_support/factories/tag_factory.rb +1 -1
  207. data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -2
  208. data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -1
  209. data/lib/spree/testing_support/factories/taxon_factory.rb +1 -1
  210. data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -1
  211. data/lib/spree/testing_support/factories/tracker_factory.rb +1 -1
  212. data/lib/spree/testing_support/factories/user_factory.rb +1 -1
  213. data/lib/spree/testing_support/factories/variant_factory.rb +1 -2
  214. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  215. data/lib/spree/testing_support/factories/zone_member_factory.rb +1 -1
  216. data/lib/spree/testing_support/factories.rb +3 -3
  217. data/lib/spree/testing_support/flash.rb +1 -3
  218. data/lib/spree/testing_support/i18n.rb +5 -6
  219. data/lib/spree/testing_support/kernel.rb +1 -2
  220. data/lib/spree/testing_support/order_walkthrough.rb +12 -15
  221. data/lib/spree/testing_support/preferences.rb +0 -1
  222. data/lib/tasks/core.rake +47 -56
  223. data/lib/tasks/email.rake +2 -2
  224. data/lib/tasks/exchanges.rake +5 -5
  225. data/spree_core.gemspec +1 -1
  226. metadata +5 -9
  227. data/app/models/spree/calculator/percent_per_item.rb +0 -51
  228. data/config/initializers/premailer_rails.rb +0 -3
  229. data/lib/spree/core/delegate_belongs_to.rb +0 -99
  230. data/lib/spree/testing_support/microdata.rb +0 -192
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 73e2d20d2e94ec8108511604d21d42356cc17e6f
4
- data.tar.gz: 15a87566816c184d635ab8dfa37832206e7b5dd9
3
+ metadata.gz: c01ec77a94de597431df6260fdfe18a88817c241
4
+ data.tar.gz: 72dcbd2cd49f05b804e3bf427d47899d3f11a3a0
5
5
  SHA512:
6
- metadata.gz: 114e9c29ef8f116cd2998cc3e8e008a8a369f35f5927f78067d153b31e02987e19d076099c302500d6245a27de76d281577dd4121f258086dd65e6566c4ba577
7
- data.tar.gz: c1a0a77381b644cd78822fd7d34518cf304e0d7ccd9e81a9f9e424aec589ce3b6df47da707b061de156a7f28fddcec44a967143f11aa8be01c8bb1f7b31667ec
6
+ metadata.gz: 95ba01f3578d5bebce43b70a421996ca9b6c7a7493b03b27841fd45a08bddfdabc79eb31e266a8d33a0c870e48962f47f2a34735e8cf1eccac1cd849b239d8ab
7
+ data.tar.gz: 1ab924152669666ce1d0e1dd4bbfd6b056b6cd66149d19bdd26b8bb0c8244dbd583a31a7e9aebb8944650e49e00885d9da6fd3c582eb51d49133ff60c48998ab
@@ -1,14 +1,13 @@
1
1
  module Spree
2
2
  module BaseHelper
3
-
4
3
  def available_countries
5
4
  checkout_zone = Zone.find_by(name: Spree::Config[:checkout_zone])
6
5
 
7
- if checkout_zone && checkout_zone.kind == 'country'
8
- countries = checkout_zone.country_list
9
- else
10
- countries = Country.all
11
- end
6
+ countries = if checkout_zone && checkout_zone.kind == 'country'
7
+ checkout_zone.country_list
8
+ else
9
+ Country.all
10
+ end
12
11
 
13
12
  countries.collect do |country|
14
13
  country.name = Spree.t(country.iso, scope: 'country_names', default: country.name)
@@ -33,27 +32,27 @@ module Spree
33
32
  end
34
33
  end
35
34
 
36
- def logo(image_path=Spree::Config[:logo])
35
+ def logo(image_path = Spree::Config[:logo])
37
36
  link_to image_tag(image_path), spree.respond_to?(:root_path) ? spree.root_path : main_app.root_path
38
37
  end
39
38
 
40
39
  def meta_data
41
- object = instance_variable_get('@'+controller_name.singularize)
40
+ object = instance_variable_get('@' + controller_name.singularize)
42
41
  meta = {}
43
42
 
44
- if object.kind_of? ApplicationRecord
43
+ if object.is_a? ApplicationRecord
45
44
  meta[:keywords] = object.meta_keywords if object[:meta_keywords].present?
46
45
  meta[:description] = object.meta_description if object[:meta_description].present?
47
46
  end
48
47
 
49
- if meta[:description].blank? && object.kind_of?(Spree::Product)
48
+ if meta[:description].blank? && object.is_a?(Spree::Product)
50
49
  meta[:description] = truncate(strip_tags(object.description), length: 160, separator: ' ')
51
50
  end
52
51
 
53
- meta.reverse_merge!({
54
- keywords: current_store.meta_keywords,
55
- description: current_store.meta_description,
56
- }) if meta[:keywords].blank? or meta[:description].blank?
52
+ if meta[:keywords].blank? || meta[:description].blank?
53
+ meta.reverse_merge!(keywords: current_store.meta_keywords,
54
+ description: current_store.meta_description)
55
+ end
57
56
  meta
58
57
  end
59
58
 
@@ -66,22 +65,22 @@ module Spree
66
65
  def method_missing(method_name, *args, &block)
67
66
  if image_style = image_style_from_method_name(method_name)
68
67
  define_image_method(image_style)
69
- self.send(method_name, *args)
68
+ send(method_name, *args)
70
69
  else
71
70
  super
72
71
  end
73
72
  end
74
73
 
75
74
  def pretty_time(time)
76
- [I18n.l(time.to_date, format: :long), time.strftime("%l:%M %p")].join(" ")
75
+ [I18n.l(time.to_date, format: :long), time.strftime('%l:%M %p')].join(' ')
77
76
  end
78
77
 
79
78
  def seo_url(taxon)
80
- return spree.nested_taxons_path(taxon.permalink)
79
+ spree.nested_taxons_path(taxon.permalink)
81
80
  end
82
81
 
83
82
  # human readable list of variant options
84
- def variant_options(v, options={})
83
+ def variant_options(v, _options = {})
85
84
  v.options_text
86
85
  end
87
86
 
@@ -24,7 +24,7 @@ module Spree
24
24
  def variant_full_price(variant)
25
25
  product = variant.product
26
26
  unless product.variants.active(current_currency).all? { |v| v.price == product.price }
27
- Spree::Money.new(variant.price, { currency: current_currency }).to_html
27
+ Spree::Money.new(variant.price, currency: current_currency).to_html
28
28
  end
29
29
  end
30
30
 
@@ -38,7 +38,7 @@ module Spree
38
38
  description.blank? ? Spree.t(:product_has_no_description) : raw(description)
39
39
  end
40
40
 
41
- def line_item_description_text description_text
41
+ def line_item_description_text(description_text)
42
42
  if description_text.present?
43
43
  truncate(strip_tags(description_text.gsub(' ', ' ').squish), length: 100)
44
44
  else
@@ -50,16 +50,16 @@ module Spree
50
50
  count = @products.count
51
51
  max_updated_at = (@products.maximum(:updated_at) || Date.today).to_s(:number)
52
52
  products_cache_keys = "spree/products/all-#{params[:page]}-#{max_updated_at}-#{count}"
53
- (common_product_cache_keys + [products_cache_keys]).compact.join("/")
53
+ (common_product_cache_keys + [products_cache_keys]).compact.join('/')
54
54
  end
55
55
 
56
56
  def cache_key_for_product(product = @product)
57
- (common_product_cache_keys + [product.cache_key, product.possible_promotions]).compact.join("/")
57
+ (common_product_cache_keys + [product.cache_key, product.possible_promotions]).compact.join('/')
58
58
  end
59
59
 
60
60
  def available_status(product) # will return a human readable string
61
61
  return Spree.t(:discontinued) if product.discontinued?
62
- return Spree.t(:deleted) if product.deleted?
62
+ return Spree.t(:deleted) if product.deleted?
63
63
 
64
64
  if product.available?
65
65
  Spree.t(:available)
@@ -3,7 +3,7 @@ module Spree
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- has_one :calculator, class_name: "Spree::Calculator", as: :calculable, inverse_of: :calculable, dependent: :destroy, autosave: true
6
+ has_one :calculator, class_name: 'Spree::Calculator', as: :calculable, inverse_of: :calculable, dependent: :destroy, autosave: true
7
7
  accepts_nested_attributes_for :calculator
8
8
  validates :calculator, presence: true
9
9
  delegate :compute, to: :calculator
@@ -18,12 +18,13 @@ module Spree
18
18
 
19
19
  def calculator_type=(calculator_type)
20
20
  klass = calculator_type.constantize if calculator_type
21
- self.calculator = klass.new if klass && !self.calculator.is_a?(klass)
21
+ self.calculator = klass.new if klass && !calculator.is_a?(klass)
22
22
  end
23
23
 
24
24
  private
25
+
25
26
  def self.model_name_without_spree_namespace
26
- self.to_s.tableize.gsub('/', '_').sub('spree_', '')
27
+ to_s.tableize.tr('/', '_').sub('spree_', '')
27
28
  end
28
29
 
29
30
  def self.spree_calculators
@@ -4,9 +4,9 @@ module Spree
4
4
 
5
5
  included do
6
6
  has_one :default_price,
7
- -> { where currency: Spree::Config[:currency] },
8
- class_name: 'Spree::Price',
9
- dependent: :destroy
7
+ -> { where currency: Spree::Config[:currency] },
8
+ class_name: 'Spree::Price',
9
+ dependent: :destroy
10
10
 
11
11
  delegate :display_price, :display_amount, :price, :currency, :price=,
12
12
  :price_including_vat_for, :currency=, to: :find_or_build_default_price
@@ -18,10 +18,9 @@ module Spree
18
18
  end
19
19
 
20
20
  def has_default_price?
21
- !self.default_price.nil?
21
+ !default_price.nil?
22
22
  end
23
23
 
24
-
25
24
  def find_or_build_default_price
26
25
  default_price || build_default_price
27
26
  end
@@ -8,7 +8,7 @@ module Spree
8
8
  #
9
9
  #
10
10
  # ==== Examples
11
- # Decorate a method, with the default option of using the base object's
11
+ # Decorate a method, with the default option of using the base object's
12
12
  # currency
13
13
  #
14
14
  # extend Spree::DisplayMoney
@@ -4,7 +4,7 @@ module Spree
4
4
 
5
5
  included do
6
6
  scope :active, -> { where(active: true) }
7
- default_scope { order("LOWER(#{self.table_name}.name)") }
7
+ default_scope { order("LOWER(#{table_name}.name)") }
8
8
 
9
9
  validates :name, presence: true, uniqueness: { case_sensitive: false }
10
10
  end
@@ -8,17 +8,16 @@ module Spree::RansackableAttributes
8
8
  class_attribute :default_ransackable_attributes
9
9
  self.default_ransackable_attributes = %w[id name updated_at created_at]
10
10
 
11
- def self.ransackable_associations(*args)
12
- self.whitelisted_ransackable_associations || []
11
+ def self.ransackable_associations(*_args)
12
+ whitelisted_ransackable_associations || []
13
13
  end
14
14
 
15
- def self.ransackable_attributes(*args)
16
- self.default_ransackable_attributes | (self.whitelisted_ransackable_attributes || [])
15
+ def self.ransackable_attributes(*_args)
16
+ default_ransackable_attributes | (whitelisted_ransackable_attributes || [])
17
17
  end
18
18
 
19
- def self.ransackable_scopes(*args)
19
+ def self.ransackable_scopes(*_args)
20
20
  whitelisted_ransackable_scopes || []
21
21
  end
22
22
  end
23
-
24
23
  end
@@ -4,27 +4,27 @@ module Spree
4
4
 
5
5
  included do
6
6
  belongs_to :bill_address, foreign_key: :bill_address_id, class_name: 'Spree::Address',
7
- optional: true
7
+ optional: true
8
8
  alias_attribute :billing_address, :bill_address
9
9
 
10
10
  belongs_to :ship_address, foreign_key: :ship_address_id, class_name: 'Spree::Address',
11
- optional: true
11
+ optional: true
12
12
  alias_attribute :shipping_address, :ship_address
13
13
 
14
14
  accepts_nested_attributes_for :ship_address, :bill_address
15
15
 
16
16
  def persist_order_address(order)
17
- b_address = self.bill_address || self.build_bill_address
17
+ b_address = bill_address || build_bill_address
18
18
  b_address.attributes = order.bill_address.attributes.except('id', 'updated_at', 'created_at')
19
19
  b_address.save
20
- self.update_attributes(bill_address_id: b_address.id)
20
+ update_attributes(bill_address_id: b_address.id)
21
21
 
22
22
  # May not be present if delivery step has been removed
23
23
  if order.ship_address
24
- s_address = self.ship_address || self.build_ship_address
24
+ s_address = ship_address || build_ship_address
25
25
  s_address.attributes = order.ship_address.attributes.except('id', 'updated_at', 'created_at')
26
26
  s_address.save
27
- self.update_attributes(ship_address_id: s_address.id)
27
+ update_attributes(ship_address_id: s_address.id)
28
28
  end
29
29
  end
30
30
  end
@@ -17,7 +17,7 @@ module Spree
17
17
  has_many :promotion_rule_users, class_name: 'Spree::PromotionRuleUser', foreign_key: :user_id, dependent: :destroy
18
18
  has_many :promotion_rules, through: :promotion_rule_users, class_name: 'Spree::PromotionRule'
19
19
 
20
- has_many :orders, foreign_key: :user_id, class_name: "Spree::Order"
20
+ has_many :orders, foreign_key: :user_id, class_name: 'Spree::Order'
21
21
  has_many :store_credits, foreign_key: :user_id, class_name: 'Spree::StoreCredit'
22
22
 
23
23
  belongs_to :ship_address, class_name: 'Spree::Address', optional: true
@@ -32,8 +32,8 @@ module Spree
32
32
  spree_roles.any? { |role| role.name == role_in_question.to_s }
33
33
  end
34
34
 
35
- def last_incomplete_spree_order
36
- orders.incomplete.
35
+ def last_incomplete_spree_order(store)
36
+ orders.where(store: store).incomplete.
37
37
  includes(line_items: [variant: [:images, :option_values, :product]]).
38
38
  order('created_at DESC').
39
39
  first
@@ -3,8 +3,10 @@ module Spree
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- has_many :credit_cards, class_name: "Spree::CreditCard", foreign_key: :user_id
7
- def default_credit_card; credit_cards.default.first; end
6
+ has_many :credit_cards, class_name: 'Spree::CreditCard', foreign_key: :user_id
7
+ def default_credit_card
8
+ credit_cards.default.first
9
+ end
8
10
 
9
11
  def payment_sources
10
12
  credit_cards.with_payment_profile
@@ -15,7 +15,7 @@ module Spree
15
15
  if order_count.to_i > 0
16
16
  lifetime_value / order_count
17
17
  else
18
- BigDecimal("0.00")
18
+ BigDecimal('0.00')
19
19
  end
20
20
  end
21
21
  end
@@ -15,15 +15,15 @@ module Spree
15
15
  # the +CanCan::Ability+ module. The registered ability should behave properly as a stand-alone class
16
16
  # and therefore should be easy to test in isolation.
17
17
  def self.register_ability(ability)
18
- self.abilities.add(ability)
18
+ abilities.add(ability)
19
19
  end
20
20
 
21
21
  def self.remove_ability(ability)
22
- self.abilities.delete(ability)
22
+ abilities.delete(ability)
23
23
  end
24
24
 
25
25
  def initialize(user)
26
- self.clear_aliased_actions
26
+ clear_aliased_actions
27
27
 
28
28
  # override cancan default aliasing (we don't want to differentiate between read and index)
29
29
  alias_action :delete, to: :destroy
@@ -10,8 +10,8 @@ module Spree
10
10
  'TO', 'TV', 'UG', 'AE', 'VU', 'YE', 'ZW'
11
11
  ].freeze
12
12
 
13
- belongs_to :country, class_name: "Spree::Country"
14
- belongs_to :state, class_name: "Spree::State", optional: true
13
+ belongs_to :country, class_name: 'Spree::Country'
14
+ belongs_to :state, class_name: 'Spree::State', optional: true
15
15
 
16
16
  has_many :shipments, inverse_of: :address
17
17
 
@@ -31,11 +31,15 @@ module Spree
31
31
  self.whitelisted_ransackable_attributes = %w[firstname lastname company]
32
32
 
33
33
  def self.build_default
34
- country = Spree::Country.find(Spree::Config[:default_country_id]) rescue Spree::Country.first
34
+ country = begin
35
+ Spree::Country.find(Spree::Config[:default_country_id])
36
+ rescue
37
+ Spree::Country.first
38
+ end
35
39
  new(country: country)
36
40
  end
37
41
 
38
- def self.default(user = nil, kind = "bill")
42
+ def self.default(user = nil, kind = 'bill')
39
43
  if user && user_address = user.public_send(:"#{kind}_address")
40
44
  user_address.clone
41
45
  else
@@ -68,11 +72,11 @@ module Spree
68
72
  end
69
73
 
70
74
  def clone
71
- self.class.new(self.attributes.except('id', 'updated_at', 'created_at'))
75
+ self.class.new(attributes.except('id', 'updated_at', 'created_at'))
72
76
  end
73
77
 
74
78
  def ==(other_address)
75
- self_attrs = self.attributes
79
+ self_attrs = attributes
76
80
  other_attrs = other_address.respond_to?(:attributes) ? other_address.attributes : {}
77
81
 
78
82
  [self_attrs, other_attrs].each { |attrs| attrs.except!('id', 'created_at', 'updated_at') }
@@ -99,7 +103,7 @@ module Spree
99
103
  end
100
104
 
101
105
  def require_phone?
102
- true
106
+ Spree::Config[:address_requires_phone]
103
107
  end
104
108
 
105
109
  def require_zipcode?
@@ -165,10 +169,10 @@ module Spree
165
169
 
166
170
  def postal_code_validate
167
171
  return if country.blank? || country.iso.blank? || !require_zipcode?
168
- return if !TwitterCldr::Shared::PostalCodes.territories.include?(country.iso.downcase.to_sym)
172
+ return unless TwitterCldr::Shared::PostalCodes.territories.include?(country.iso.downcase.to_sym)
169
173
 
170
174
  postal_code = TwitterCldr::Shared::PostalCodes.for_territory(country.iso)
171
- errors.add(:zipcode, :invalid) if !postal_code.valid?(zipcode.to_s.strip)
175
+ errors.add(:zipcode, :invalid) unless postal_code.valid?(zipcode.to_s.strip)
172
176
  end
173
177
  end
174
178
  end
@@ -26,7 +26,7 @@ module Spree
26
26
 
27
27
  def best_promo_adjustment
28
28
  @best_promo_adjustment ||= begin
29
- adjustments.competing_promos.eligible.reorder("amount ASC, created_at DESC, id DESC").first
29
+ adjustments.competing_promos.eligible.reorder('amount ASC, created_at DESC, id DESC').first
30
30
  end
31
31
  end
32
32
 
@@ -29,8 +29,8 @@ module Spree
29
29
  def persist_totals(totals)
30
30
  attributes = totals
31
31
  attributes[:adjustment_total] = totals[:non_taxable_adjustment_total] +
32
- totals[:taxable_adjustment_total] +
33
- totals[:additional_tax_total]
32
+ totals[:taxable_adjustment_total] +
33
+ totals[:additional_tax_total]
34
34
  attributes[:updated_at] = Time.current
35
35
  @adjustable.update_columns(totals)
36
36
  end
@@ -16,7 +16,9 @@ module Spree
16
16
 
17
17
  def initialize(adjustable)
18
18
  @adjustable = adjustable
19
- @adjustments, @sources, @promotions = [], [], []
19
+ @adjustments = []
20
+ @sources = []
21
+ @promotions = []
20
22
  all_adjustments.each { |a| add_adjustment(a) }
21
23
  end
22
24
 
@@ -30,7 +32,7 @@ module Spree
30
32
  add(promotions, promotion, source.promotion_id)
31
33
  end
32
34
 
33
- def promotions_adjustments(promotion_id, adjustments = adjustments())
35
+ def promotions_adjustments(promotion_id, adjustments = adjustments)
34
36
  where(sources, promotion_id: promotion_id).map do |source|
35
37
  where(adjustments, source_id: source.id)
36
38
  end.flatten
@@ -56,7 +58,7 @@ module Spree
56
58
 
57
59
  def all_adjustments
58
60
  order.all_adjustments.promotion.includes(source: [:promotion]).where.
59
- not("adjustable_id = ? AND adjustable_type = ?", adjustable.id, adjustable.class.to_s)
61
+ not('adjustable_id = ? AND adjustable_type = ?', adjustable.id, adjustable.class.to_s)
60
62
  end
61
63
 
62
64
  def add(array, object, id)
@@ -64,7 +66,7 @@ module Spree
64
66
  end
65
67
 
66
68
  def item_adjustments
67
- adjustments.select { |a| a.adjustable_type != 'Spree::Shipment' }
69
+ adjustments.reject { |a| a.adjustable_type == 'Spree::Shipment' }
68
70
  end
69
71
 
70
72
  def where(array, opts = {})
@@ -53,7 +53,7 @@ module Spree
53
53
  scope :tax, -> { where(source_type: 'Spree::TaxRate') }
54
54
  scope :non_tax, -> do
55
55
  source_type = arel_table[:source_type]
56
- where(source_type.not_eq('Spree::TaxRate').or source_type.eq(nil))
56
+ where(source_type.not_eq('Spree::TaxRate').or(source_type.eq(nil)))
57
57
  end
58
58
  scope :price, -> { where(adjustable_type: 'Spree::LineItem') }
59
59
  scope :shipping, -> { where(adjustable_type: 'Spree::Shipment') }
@@ -63,7 +63,7 @@ module Spree
63
63
  scope :credit, -> { where("#{quoted_table_name}.amount < 0") }
64
64
  scope :nonzero, -> { where("#{quoted_table_name}.amount != 0") }
65
65
  scope :promotion, -> { where(source_type: 'Spree::PromotionAction') }
66
- scope :return_authorization, -> { where(source_type: "Spree::ReturnAuthorization") }
66
+ scope :return_authorization, -> { where(source_type: 'Spree::ReturnAuthorization') }
67
67
  scope :is_included, -> { where(included: true) }
68
68
  scope :additional, -> { where(included: false) }
69
69
  scope :competing_promos, -> { where(source_type: competing_promos_source_types) }
@@ -99,6 +99,5 @@ module Spree
99
99
  # Cause adjustable's total to be recalculated
100
100
  Adjustable::AdjustmentsUpdater.update(adjustable)
101
101
  end
102
-
103
102
  end
104
103
  end
@@ -15,12 +15,13 @@
15
15
  # a.get :color
16
16
  # a.preferred_color
17
17
  #
18
- require "spree/core/search/base"
18
+ require 'spree/core/search/base'
19
19
 
20
20
  module Spree
21
21
  class AppConfiguration < Preferences::Configuration
22
22
  # Alphabetized to more easily lookup particular preferences
23
23
  preference :address_requires_state, :boolean, default: true # should state/state_name be required
24
+ preference :address_requires_phone, :boolean, default: true # Determines whether we require phone in address
24
25
  preference :admin_interface_logo, :string, default: 'admin/logo.png'
25
26
  preference :admin_path, :string, default: '/admin'
26
27
  preference :admin_products_per_page, :integer, default: Kaminari.config.default_per_page
@@ -41,7 +42,7 @@ module Spree
41
42
  preference :binary_inventory_cache, :boolean, default: false # only invalidate product cache when a stock item changes whether it is in_stock
42
43
  preference :checkout_zone, :string, default: nil # replace with the name of a zone if you would like to limit the countries
43
44
  preference :company, :boolean, default: false # Request company field for billing and shipping addr
44
- preference :currency, :string, default: "USD"
45
+ preference :currency, :string, default: 'USD'
45
46
  preference :default_country_id, :integer
46
47
  preference :expedited_exchanges, :boolean, default: false # NOTE this requires payment profiles to be supported on your gateway of choice as well as a delayed job handler to be configured with activejob. kicks off an exchange shipment upon return authorization save. charge customer if they do not return items within timely manner.
47
48
  preference :expedited_exchanges_days_window, :integer, default: 14 # the amount of days the customer has to return their item after the expedited exchange is shipped in order to avoid being charged
@@ -55,7 +56,7 @@ module Spree
55
56
  preference :send_core_emails, :boolean, default: true # Default mail headers settings
56
57
  preference :shipping_instructions, :boolean, default: false # Request instructions/info for shipping
57
58
  preference :show_only_complete_orders_by_default, :boolean, default: true
58
- preference :show_variant_full_price, :boolean, default: false #Displays variant full price or difference with product price. Default false to be compatible with older behavior
59
+ preference :show_variant_full_price, :boolean, default: false # Displays variant full price or difference with product price. Default false to be compatible with older behavior
59
60
  preference :show_products_without_price, :boolean, default: false
60
61
  preference :show_raw_product_description, :boolean, default: false
61
62
  preference :tax_using_ship_address, :boolean, default: true
@@ -70,8 +71,6 @@ module Spree
70
71
  @searcher_class ||= Spree::Core::Search::Base
71
72
  end
72
73
 
73
- def searcher_class=(sclass)
74
- @searcher_class = sclass
75
- end
74
+ attr_writer :searcher_class
76
75
  end
77
76
  end
@@ -11,7 +11,7 @@ class Spree::Base < ApplicationRecord
11
11
  end
12
12
 
13
13
  if Kaminari.config.page_method_name != :page
14
- def self.page num
14
+ def self.page(num)
15
15
  send Kaminari.config.page_method_name, num
16
16
  end
17
17
  end
@@ -11,14 +11,13 @@ module Spree
11
11
  # Orders created before Spree 2.1 had tax adjustments applied to the order, as a whole.
12
12
  # Orders created with Spree 2.2 and after, have them applied to the line items individually.
13
13
  def compute_order(order)
14
-
15
14
  matched_line_items = order.line_items.select do |line_item|
16
15
  line_item.tax_category == rate.tax_category
17
16
  end
18
17
 
19
18
  line_items_total = matched_line_items.sum(&:total)
20
19
  if rate.included_in_price
21
- round_to_two_places(line_items_total - ( line_items_total / (1 + rate.amount) ) )
20
+ round_to_two_places(line_items_total - (line_items_total / (1 + rate.amount)))
22
21
  else
23
22
  round_to_two_places(line_items_total * rate.amount)
24
23
  end
@@ -33,8 +32,8 @@ module Spree
33
32
  end
34
33
  end
35
34
 
36
- alias_method :compute_shipment, :compute_shipment_or_line_item
37
- alias_method :compute_line_item, :compute_shipment_or_line_item
35
+ alias compute_shipment compute_shipment_or_line_item
36
+ alias compute_line_item compute_shipment_or_line_item
38
37
 
39
38
  def compute_shipping_rate(shipping_rate)
40
39
  if rate.included_in_price
@@ -49,7 +48,7 @@ module Spree
49
48
  private
50
49
 
51
50
  def rate
52
- self.calculable
51
+ calculable
53
52
  end
54
53
 
55
54
  def deduced_total_by_rate(pre_tax_amount, rate)
@@ -9,7 +9,7 @@ module Spree
9
9
  end
10
10
 
11
11
  def compute(object)
12
- computed_amount = (object.amount * preferred_flat_percent / 100).round(2)
12
+ computed_amount = (object.amount * preferred_flat_percent / 100).round(2)
13
13
 
14
14
  # We don't want to cause the promotion adjustments to push the order into a negative total.
15
15
  if computed_amount > object.amount
@@ -3,14 +3,14 @@ require_dependency 'spree/calculator'
3
3
  module Spree
4
4
  class Calculator::FlatRate < Calculator
5
5
  preference :amount, :decimal, default: 0
6
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
6
+ preference :currency, :string, default: -> { Spree::Config[:currency] }
7
7
 
8
8
  def self.description
9
9
  Spree.t(:flat_rate_per_order)
10
10
  end
11
11
 
12
- def compute(object=nil)
13
- if object && preferred_currency.upcase == object.currency.upcase
12
+ def compute(object = nil)
13
+ if object && preferred_currency.casecmp(object.currency.upcase).zero?
14
14
  preferred_amount
15
15
  else
16
16
  0
@@ -5,25 +5,25 @@ module Spree
5
5
  preference :first_item, :decimal, default: 0.0
6
6
  preference :additional_item, :decimal, default: 0.0
7
7
  preference :max_items, :integer, default: 0
8
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
8
+ preference :currency, :string, default: -> { Spree::Config[:currency] }
9
9
 
10
10
  def self.description
11
11
  Spree.t(:flexible_rate)
12
12
  end
13
13
 
14
- def self.available?(object)
14
+ def self.available?(_object)
15
15
  true
16
16
  end
17
17
 
18
18
  def compute(object)
19
19
  sum = 0
20
- max = self.preferred_max_items.to_i
20
+ max = preferred_max_items.to_i
21
21
  items_count = object.quantity
22
22
  items_count.times do |i|
23
23
  if i == 0
24
- sum += self.preferred_first_item.to_f
24
+ sum += preferred_first_item.to_f
25
25
  elsif ((max > 0) && (i <= (max - 1))) || (max == 0)
26
- sum += self.preferred_additional_item.to_f
26
+ sum += preferred_additional_item.to_f
27
27
  end
28
28
  end
29
29