spree_core 3.3.6 → 3.4.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -5,7 +5,7 @@ module Spree
5
5
  preference :minimal_amount, :decimal, default: 0
6
6
  preference :normal_amount, :decimal, default: 0
7
7
  preference :discount_amount, :decimal, 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(:price_sack)
@@ -13,16 +13,16 @@ module Spree
13
13
 
14
14
  # as object we always get line items, as calculable we have Coupon, ShippingMethod
15
15
  def compute(object)
16
- if object.is_a?(Array)
17
- base = object.map { |o| o.respond_to?(:amount) ? o.amount : BigDecimal(o.to_s) }.sum
18
- else
19
- base = object.respond_to?(:amount) ? object.amount : BigDecimal(object.to_s)
20
- end
16
+ base = if object.is_a?(Array)
17
+ object.map { |o| o.respond_to?(:amount) ? o.amount : BigDecimal(o.to_s) }.sum
18
+ else
19
+ object.respond_to?(:amount) ? object.amount : BigDecimal(object.to_s)
20
+ end
21
21
 
22
- if base < self.preferred_minimal_amount
23
- self.preferred_normal_amount
22
+ if base < preferred_minimal_amount
23
+ preferred_normal_amount
24
24
  else
25
- self.preferred_discount_amount
25
+ preferred_discount_amount
26
26
  end
27
27
  end
28
28
  end
@@ -14,7 +14,7 @@ module Spree
14
14
  end
15
15
 
16
16
  def compute_from_price(price)
17
- value = price * BigDecimal(self.preferred_flat_percent.to_s) / 100.0
17
+ value = price * BigDecimal(preferred_flat_percent.to_s) / 100.0
18
18
  (value * 100).round.to_f / 100
19
19
  end
20
20
  end
@@ -4,14 +4,14 @@ module Spree
4
4
  module Calculator::Shipping
5
5
  class FlatRate < ShippingCalculator
6
6
  preference :amount, :decimal, default: 0
7
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
7
+ preference :currency, :string, default: -> { Spree::Config[:currency] }
8
8
 
9
9
  def self.description
10
10
  Spree.t(:shipping_flat_rate_per_order)
11
11
  end
12
12
 
13
- def compute_package(package)
14
- self.preferred_amount
13
+ def compute_package(_package)
14
+ preferred_amount
15
15
  end
16
16
  end
17
17
  end
@@ -6,7 +6,7 @@ module Spree
6
6
  preference :first_item, :decimal, default: 0.0
7
7
  preference :additional_item, :decimal, default: 0.0
8
8
  preference :max_items, :integer, default: 0
9
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
9
+ preference :currency, :string, default: -> { Spree::Config[:currency] }
10
10
 
11
11
  def self.description
12
12
  Spree.t(:shipping_flexible_rate)
@@ -18,14 +18,14 @@ module Spree
18
18
 
19
19
  def compute_from_quantity(quantity)
20
20
  sum = 0
21
- max = self.preferred_max_items.to_i
21
+ max = preferred_max_items.to_i
22
22
  quantity.times do |i|
23
23
  # check max value to avoid divide by 0 errors
24
- if (max == 0 && i == 0) || (max > 0) && (i % max == 0)
25
- sum += self.preferred_first_item.to_f
26
- else
27
- sum += self.preferred_additional_item.to_f
28
- end
24
+ sum += if (max == 0 && i == 0) || (max > 0) && (i % max == 0)
25
+ preferred_first_item.to_f
26
+ else
27
+ preferred_additional_item.to_f
28
+ end
29
29
  end
30
30
 
31
31
  sum
@@ -4,7 +4,7 @@ module Spree
4
4
  module Calculator::Shipping
5
5
  class PerItem < ShippingCalculator
6
6
  preference :amount, :decimal, default: 0
7
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
7
+ preference :currency, :string, default: -> { Spree::Config[:currency] }
8
8
 
9
9
  def self.description
10
10
  Spree.t(:shipping_flat_rate_per_item)
@@ -15,7 +15,7 @@ module Spree
15
15
  end
16
16
 
17
17
  def compute_from_quantity(quantity)
18
- self.preferred_amount * quantity
18
+ preferred_amount * quantity
19
19
  end
20
20
  end
21
21
  end
@@ -6,7 +6,7 @@ module Spree
6
6
  preference :minimal_amount, :decimal, default: 0
7
7
  preference :normal_amount, :decimal, default: 0
8
8
  preference :discount_amount, :decimal, default: 0
9
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
9
+ preference :currency, :string, default: -> { Spree::Config[:currency] }
10
10
 
11
11
  def self.description
12
12
  Spree.t(:shipping_price_sack)
@@ -17,10 +17,10 @@ module Spree
17
17
  end
18
18
 
19
19
  def compute_from_price(price)
20
- if price < self.preferred_minimal_amount
21
- self.preferred_normal_amount
20
+ if price < preferred_minimal_amount
21
+ preferred_normal_amount
22
22
  else
23
- self.preferred_discount_amount
23
+ preferred_discount_amount
24
24
  end
25
25
  end
26
26
  end
@@ -19,14 +19,15 @@ module Spree
19
19
  end
20
20
 
21
21
  def compute(object)
22
- base, amount = preferred_tiers.sort.reverse.detect{ |b,_| object.amount >= b }
22
+ base, amount = preferred_tiers.sort.reverse.detect { |b, _| object.amount >= b }
23
23
  amount || preferred_base_amount
24
24
  end
25
25
 
26
26
  private
27
+
27
28
  def preferred_tiers_content
28
29
  if preferred_tiers.is_a? Hash
29
- unless preferred_tiers.keys.all?{ |k| k.is_a?(Numeric) && k > 0 }
30
+ unless preferred_tiers.keys.all? { |k| k.is_a?(Numeric) && k > 0 }
30
31
  errors.add(:base, :keys_should_be_positive_number)
31
32
  end
32
33
  else
@@ -23,17 +23,18 @@ module Spree
23
23
  end
24
24
 
25
25
  def compute(object)
26
- base, percent = preferred_tiers.sort.reverse.detect{ |b,_| object.amount >= b }
26
+ base, percent = preferred_tiers.sort.reverse.detect { |b, _| object.amount >= b }
27
27
  (object.amount * (percent || preferred_base_percent) / 100).round(2)
28
28
  end
29
29
 
30
30
  private
31
+
31
32
  def preferred_tiers_content
32
33
  if preferred_tiers.is_a? Hash
33
- unless preferred_tiers.keys.all?{ |k| k.is_a?(Numeric) && k > 0 }
34
+ unless preferred_tiers.keys.all? { |k| k.is_a?(Numeric) && k > 0 }
34
35
  errors.add(:base, :keys_should_be_positive_number)
35
36
  end
36
- unless preferred_tiers.values.all?{ |k| k.is_a?(Numeric) && k >= 0 && k <= 100 }
37
+ unless preferred_tiers.values.all? { |k| k.is_a?(Numeric) && k >= 0 && k <= 100 }
37
38
  errors.add(:base, :values_should_be_percent)
38
39
  end
39
40
  else
@@ -1,7 +1,7 @@
1
1
  module Spree
2
2
  class Calculator < Spree::Base
3
3
  # Conditional check for backwards compatibilty since acts as paranoid was added late https://github.com/spree/spree/issues/5858
4
- if connection.data_source_exists?(:spree_calculators) && connection.column_exists?(:spree_calculators, :deleted_at)
4
+ if ActiveRecord::Base.connected? && connection.data_source_exists?(:spree_calculators) && connection.column_exists?(:spree_calculators, :deleted_at)
5
5
  acts_as_paranoid
6
6
  end
7
7
 
@@ -16,7 +16,7 @@ module Spree
16
16
  method = "compute_#{computable_name}".to_sym
17
17
  calculator_class = self.class
18
18
  if respond_to?(method)
19
- self.send(method, computable)
19
+ send(method, computable)
20
20
  else
21
21
  raise NotImplementedError, "Please implement '#{method}(#{computable_name})' in your calculator: #{calculator_class.name}"
22
22
  end
@@ -33,14 +33,14 @@ module Spree
33
33
  end
34
34
 
35
35
  def to_s
36
- self.class.name.titleize.gsub("Calculator\/", "")
36
+ self.class.name.titleize.gsub("Calculator\/", '')
37
37
  end
38
38
 
39
39
  def description
40
40
  self.class.description
41
41
  end
42
42
 
43
- def available?(object)
43
+ def available?(_object)
44
44
  true
45
45
  end
46
46
  end
@@ -4,8 +4,8 @@ module Spree
4
4
  acts_as_list scope: :taxon
5
5
 
6
6
  with_options inverse_of: :classifications, touch: true do
7
- belongs_to :product, class_name: "Spree::Product"
8
- belongs_to :taxon, class_name: "Spree::Taxon"
7
+ belongs_to :product, class_name: 'Spree::Product'
8
+ belongs_to :taxon, class_name: 'Spree::Taxon'
9
9
  end
10
10
 
11
11
  validates :taxon, :product, presence: true
@@ -154,7 +154,7 @@ module Spree
154
154
  year: year,
155
155
  verification_value: verification_value,
156
156
  first_name: first_name,
157
- last_name: last_name,
157
+ last_name: last_name
158
158
  )
159
159
  end
160
160
 
@@ -10,11 +10,11 @@ module Spree
10
10
  def description
11
11
  @reimbursement_objects.map do |reimbursement_object|
12
12
  "#{reimbursement_object.variant.options_text} => #{reimbursement_object.exchange_variant.options_text}"
13
- end.join(" | ")
13
+ end.join(' | ')
14
14
  end
15
15
 
16
16
  def display_amount
17
- Spree::Money.new @reimbursement_objects.map(&:total).sum
17
+ Spree::Money.new @reimbursement_objects.sum(&:total)
18
18
  end
19
19
 
20
20
  def perform!
@@ -23,7 +23,7 @@ module Spree
23
23
  shipments_units = shipments.flat_map(&:inventory_units)
24
24
 
25
25
  if shipments_units.sum(&:quantity) != new_exchange_inventory_units.sum(&:quantity)
26
- raise UnableToCreateShipments.new("Could not generate shipments for all items. Out of stock?")
26
+ raise UnableToCreateShipments, 'Could not generate shipments for all items. Out of stock?'
27
27
  end
28
28
 
29
29
  @order.shipments += shipments
@@ -40,12 +40,11 @@ module Spree
40
40
  end
41
41
 
42
42
  def self.param_key
43
- "spree_exchange"
43
+ 'spree_exchange'
44
44
  end
45
45
 
46
46
  def self.model_name
47
47
  Spree::Exchange
48
48
  end
49
-
50
49
  end
51
50
  end
@@ -1,9 +1,9 @@
1
1
  module Spree
2
2
  class Gateway::Bogus < Gateway
3
- TEST_VISA = ['4111111111111111','4012888888881881','4222222222222']
4
- TEST_MC = ['5500000000000004','5555555555554444','5105105105105100','2223000010309703']
5
- TEST_AMEX = ['378282246310005','371449635398431','378734493671000','340000000000009']
6
- TEST_DISC = ['6011000000000004','6011111111111117','6011000990139424']
3
+ TEST_VISA = ['4111111111111111', '4012888888881881', '4222222222222']
4
+ TEST_MC = ['5500000000000004', '5555555555554444', '5105105105105100', '2223000010309703']
5
+ TEST_AMEX = ['378282246310005', '371449635398431', '378734493671000', '340000000000009']
6
+ TEST_DISC = ['6011000000000004', '6011111111111117', '6011000990139424']
7
7
 
8
8
  VALID_CCS = ['1', TEST_VISA, TEST_MC, TEST_AMEX, TEST_DISC].flatten
9
9
 
@@ -25,38 +25,37 @@ module Spree
25
25
  end
26
26
  end
27
27
 
28
- def authorize(money, credit_card, options = {})
28
+ def authorize(_money, credit_card, _options = {})
29
29
  profile_id = credit_card.gateway_customer_profile_id
30
- if VALID_CCS.include? credit_card.number or (profile_id and profile_id.starts_with? 'BGS-')
30
+ if VALID_CCS.include?(credit_card.number) || (profile_id && profile_id.starts_with?('BGS-'))
31
31
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345', avs_result: { code: 'D' })
32
32
  else
33
33
  ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', { message: 'Bogus Gateway: Forced failure' }, test: true)
34
34
  end
35
35
  end
36
36
 
37
- def purchase(money, credit_card, options = {})
37
+ def purchase(_money, credit_card, _options = {})
38
38
  profile_id = credit_card.gateway_customer_profile_id
39
- if VALID_CCS.include? credit_card.number or (profile_id and profile_id.starts_with? 'BGS-')
39
+ if VALID_CCS.include?(credit_card.number) || (profile_id && profile_id.starts_with?('BGS-'))
40
40
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345', avs_result: { code: 'M' })
41
41
  else
42
42
  ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', message: 'Bogus Gateway: Forced failure', test: true)
43
43
  end
44
44
  end
45
45
 
46
- def credit(money, credit_card, response_code, options = {})
46
+ def credit(_money, _credit_card, _response_code, _options = {})
47
47
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345')
48
48
  end
49
49
 
50
- def capture(money, authorization, gateway_options)
50
+ def capture(_money, authorization, _gateway_options)
51
51
  if authorization == '12345'
52
52
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true)
53
53
  else
54
54
  ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', error: 'Bogus Gateway: Forced failure', test: true)
55
55
  end
56
-
57
56
  end
58
57
 
59
- def void(response_code, credit_card, options = {})
58
+ def void(_response_code, _credit_card, _options = {})
60
59
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345')
61
60
  end
62
61
 
@@ -78,14 +77,15 @@ module Spree
78
77
  end
79
78
 
80
79
  private
81
- def generate_profile_id(success)
82
- record = true
83
- prefix = success ? 'BGS' : 'FAIL'
84
- while record
85
- random = "#{ prefix }-#{ Array.new(6) { rand(6) }.join }"
86
- record = CreditCard.find_by(gateway_customer_profile_id: random)
87
- end
88
- random
80
+
81
+ def generate_profile_id(success)
82
+ record = true
83
+ prefix = success ? 'BGS' : 'FAIL'
84
+ while record
85
+ random = "#{prefix}-#{Array.new(6) { rand(6) }.join}"
86
+ record = CreditCard.find_by(gateway_customer_profile_id: random)
89
87
  end
88
+ random
89
+ end
90
90
  end
91
91
  end
@@ -1,12 +1,11 @@
1
1
  # Bogus Gateway that doesn't support payment profiles
2
2
  module Spree
3
3
  class Gateway::BogusSimple < Gateway::Bogus
4
-
5
4
  def payment_profiles_supported?
6
5
  false
7
6
  end
8
7
 
9
- def authorize(money, credit_card, options = {})
8
+ def authorize(_money, credit_card, _options = {})
10
9
  if VALID_CCS.include? credit_card.number
11
10
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345', avs_result: { code: 'A' })
12
11
  else
@@ -14,13 +13,12 @@ module Spree
14
13
  end
15
14
  end
16
15
 
17
- def purchase(money, credit_card, options = {})
16
+ def purchase(_money, credit_card, _options = {})
18
17
  if VALID_CCS.include? credit_card.number
19
18
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345', avs_result: { code: 'A' })
20
19
  else
21
20
  ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', message: 'Bogus Gateway: Forced failure', test: true)
22
21
  end
23
22
  end
24
-
25
23
  end
26
24
  end
@@ -15,7 +15,7 @@ module Spree
15
15
 
16
16
  def provider
17
17
  gateway_options = options
18
- gateway_options.delete :login if gateway_options.has_key?(:login) and gateway_options[:login].nil?
18
+ gateway_options.delete :login if gateway_options.key?(:login) && gateway_options[:login].nil?
19
19
  if gateway_options[:server]
20
20
  ActiveMerchant::Billing::Base.mode = gateway_options[:server].to_sym
21
21
  end
@@ -23,7 +23,7 @@ module Spree
23
23
  end
24
24
 
25
25
  def options
26
- self.preferences.inject({}){ |memo, (key, value)| memo[key.to_sym] = value; memo }
26
+ preferences.each_with_object({}) { |(key, value), memo| memo[key.to_sym] = value; }
27
27
  end
28
28
 
29
29
  def method_missing(method, *args)
@@ -61,7 +61,7 @@ module Spree
61
61
  end
62
62
 
63
63
  def sources_by_order(order)
64
- source_ids = order.payments.where(source_type: payment_source_class.to_s, payment_method_id: self.id).pluck(:source_id).uniq
64
+ source_ids = order.payments.where(source_type: payment_source_class.to_s, payment_method_id: id).pluck(:source_id).uniq
65
65
  payment_source_class.where(id: source_ids).with_payment_profile
66
66
  end
67
67
 
@@ -70,7 +70,7 @@ module Spree
70
70
  sources_by_order order
71
71
  else
72
72
  if order.user_id
73
- self.credit_cards.where(user_id: order.user_id).with_payment_profile
73
+ credit_cards.where(user_id: order.user_id).with_payment_profile
74
74
  else
75
75
  []
76
76
  end
@@ -13,14 +13,14 @@ module Spree
13
13
  path: ':rails_root/public/spree/products/:id/:style/:basename.:extension',
14
14
  convert_options: { all: '-strip -auto-orient -colorspace sRGB' }
15
15
  validates_attachment :attachment,
16
- presence: true,
17
- content_type: { content_type: accepted_image_types }
16
+ presence: true,
17
+ content_type: { content_type: accepted_image_types }
18
18
 
19
19
  # save the w,h of the original image (from which others can be calculated)
20
20
  # we need to look at the write-queue for images which have not been saved yet
21
21
  before_save :find_dimensions, if: :attachment_updated_at_changed?
22
22
 
23
- #used by admin products autocomplete
23
+ # used by admin products autocomplete
24
24
  def mini_url
25
25
  attachment.url(:mini, false)
26
26
  end
@@ -1,15 +1,15 @@
1
1
  module Spree
2
2
  class InventoryUnit < Spree::Base
3
3
  with_options inverse_of: :inventory_units do
4
- belongs_to :variant, class_name: "Spree::Variant"
5
- belongs_to :order, class_name: "Spree::Order"
6
- belongs_to :shipment, class_name: "Spree::Shipment", touch: true, optional: true
7
- belongs_to :return_authorization, class_name: "Spree::ReturnAuthorization"
8
- belongs_to :line_item, class_name: "Spree::LineItem"
4
+ belongs_to :variant, class_name: 'Spree::Variant'
5
+ belongs_to :order, class_name: 'Spree::Order'
6
+ belongs_to :shipment, class_name: 'Spree::Shipment', touch: true, optional: true
7
+ belongs_to :return_authorization, class_name: 'Spree::ReturnAuthorization'
8
+ belongs_to :line_item, class_name: 'Spree::LineItem'
9
9
  end
10
10
 
11
11
  has_many :return_items, inverse_of: :inventory_unit
12
- belongs_to :original_return_item, class_name: "Spree::ReturnItem"
12
+ belongs_to :original_return_item, class_name: 'Spree::ReturnItem'
13
13
 
14
14
  scope :backordered, -> { where state: 'backordered' }
15
15
  scope :on_hand, -> { where state: 'on_hand' }
@@ -17,11 +17,11 @@ module Spree
17
17
  scope :shipped, -> { where state: 'shipped' }
18
18
  scope :returned, -> { where state: 'returned' }
19
19
  scope :backordered_per_variant, ->(stock_item) do
20
- includes(:shipment, :order)
21
- .where.not(spree_shipments: { state: 'canceled' })
22
- .where(variant_id: stock_item.variant_id)
23
- .where.not(spree_orders: { completed_at: nil })
24
- .backordered.order("spree_orders.completed_at ASC")
20
+ includes(:shipment, :order).
21
+ where.not(spree_shipments: { state: 'canceled' }).
22
+ where(variant_id: stock_item.variant_id).
23
+ where.not(spree_orders: { completed_at: nil }).
24
+ backordered.order('spree_orders.completed_at ASC')
25
25
  end
26
26
 
27
27
  validates :quantity, numericality: { greater_than: 0 }
@@ -60,7 +60,7 @@ module Spree
60
60
 
61
61
  def find_stock_item
62
62
  Spree::StockItem.where(stock_location_id: shipment.stock_location_id,
63
- variant_id: variant_id).first
63
+ variant_id: variant_id).first
64
64
  end
65
65
 
66
66
  def self.split(original_inventory_unit, extract_quantity)
@@ -104,11 +104,11 @@ module Spree
104
104
  def required_quantity
105
105
  return @required_quantity unless @required_quantity.nil?
106
106
 
107
- if exchanged_unit?
108
- @required_quantity = original_return_item.return_quantity
109
- else
110
- @required_quantity = line_item.quantity
111
- end
107
+ @required_quantity = if exchanged_unit?
108
+ original_return_item.return_quantity
109
+ else
110
+ line_item.quantity
111
+ end
112
112
  end
113
113
 
114
114
  def exchanged_unit?
@@ -117,21 +117,21 @@ module Spree
117
117
 
118
118
  private
119
119
 
120
- def allow_ship?
121
- self.on_hand?
122
- end
120
+ def allow_ship?
121
+ on_hand?
122
+ end
123
123
 
124
- def fulfill_order
125
- self.reload
126
- order.fulfill!
127
- end
124
+ def fulfill_order
125
+ reload
126
+ order.fulfill!
127
+ end
128
128
 
129
- def percentage_of_line_item
130
- quantity / BigDecimal.new(line_item.quantity)
131
- end
129
+ def percentage_of_line_item
130
+ quantity / BigDecimal.new(line_item.quantity)
131
+ end
132
132
 
133
- def current_return_item
134
- return_items.not_cancelled.first
135
- end
133
+ def current_return_item
134
+ return_items.not_cancelled.first
135
+ end
136
136
  end
137
137
  end
@@ -3,10 +3,10 @@ module Spree
3
3
  before_validation :ensure_valid_quantity
4
4
 
5
5
  with_options inverse_of: :line_items do
6
- belongs_to :order, class_name: "Spree::Order", touch: true
7
- belongs_to :variant, class_name: "Spree::Variant"
6
+ belongs_to :order, class_name: 'Spree::Order', touch: true
7
+ belongs_to :variant, class_name: 'Spree::Variant'
8
8
  end
9
- belongs_to :tax_category, class_name: "Spree::TaxCategory"
9
+ belongs_to :tax_category, class_name: 'Spree::TaxCategory'
10
10
 
11
11
  has_one :product, through: :variant
12
12
 
@@ -23,7 +23,7 @@ module Spree
23
23
  validates_with Stock::AvailabilityValidator
24
24
  validate :ensure_proper_currency, if: -> { order.present? }
25
25
 
26
- before_destroy :verify_order_inventory, if: -> { order.has_checkout_step?("delivery") }
26
+ before_destroy :verify_order_inventory, if: -> { order.has_checkout_step?('delivery') }
27
27
 
28
28
  before_destroy :destroy_inventory_units
29
29
 
@@ -54,9 +54,7 @@ module Spree
54
54
  end
55
55
 
56
56
  def copy_tax_category
57
- if variant
58
- self.tax_category = variant.tax_category
59
- end
57
+ self.tax_category = variant.tax_category if variant
60
58
  end
61
59
 
62
60
  extend DisplayMoney
@@ -76,7 +74,7 @@ module Spree
76
74
  end
77
75
 
78
76
  alias discounted_money display_discounted_amount
79
- alias_method :discounted_amount, :taxable_amount
77
+ alias discounted_amount taxable_amount
80
78
 
81
79
  def final_amount
82
80
  amount + adjustment_total
@@ -127,7 +125,7 @@ module Spree
127
125
  end
128
126
 
129
127
  def update_inventory
130
- if (saved_changes? || target_shipment.present?) && order.has_checkout_step?("delivery")
128
+ if (saved_changes? || target_shipment.present?) && order.has_checkout_step?('delivery')
131
129
  verify_order_inventory
132
130
  end
133
131
  end
@@ -19,7 +19,7 @@ module Spree
19
19
 
20
20
  default_scope { order(:position) }
21
21
 
22
- accepts_nested_attributes_for :option_values, reject_if: lambda { |ov| ov[:name].blank? || ov[:presentation].blank? }, allow_destroy: true
22
+ accepts_nested_attributes_for :option_values, reject_if: ->(ov) { ov[:name].blank? || ov[:presentation].blank? }, allow_destroy: true
23
23
 
24
24
  after_touch :touch_all_products
25
25
 
@@ -58,7 +58,7 @@ module Spree
58
58
 
59
59
  event :return do
60
60
  transition to: :returned,
61
- from: [:complete, :awaiting_return, :canceled, :returned, :resumed],
61
+ from: [:complete, :awaiting_return, :canceled, :resumed],
62
62
  if: :all_inventory_units_returned?
63
63
  end
64
64
 
@@ -184,7 +184,7 @@ module Spree
184
184
  checkout_steps << step
185
185
  end).map(&:to_s)
186
186
  # Ensure there is always a complete step
187
- steps << "complete" unless steps.include?("complete")
187
+ steps << 'complete' unless steps.include?('complete')
188
188
  steps
189
189
  end
190
190
 
@@ -226,7 +226,7 @@ module Spree
226
226
  if existing_card_id.present?
227
227
  credit_card = CreditCard.find existing_card_id
228
228
  if credit_card.user_id != user_id || credit_card.user_id.blank?
229
- raise Core::GatewayError.new Spree.t(:invalid_credit_card)
229
+ raise Core::GatewayError, Spree.t(:invalid_credit_card)
230
230
  end
231
231
 
232
232
  credit_card.verification_value = params[:cvc_confirm] if params[:cvc_confirm].present?
@@ -253,7 +253,7 @@ module Spree
253
253
  clone_billing
254
254
  # Skip setting ship address if order doesn't have a delivery checkout step
255
255
  # to avoid triggering validations on shipping address
256
- clone_shipping if checkout_steps.include?("delivery")
256
+ clone_shipping if checkout_steps.include?('delivery')
257
257
  end
258
258
  end
259
259
 
@@ -306,7 +306,7 @@ module Spree
306
306
  if @updating_params[:payment_source].present?
307
307
  source_params = @updating_params.
308
308
  delete(:payment_source)[@updating_params[:order][:payments_attributes].
309
- first[:payment_method_id].to_s]
309
+ first[:payment_method_id].to_s]
310
310
 
311
311
  if source_params
312
312
  @updating_params[:order][:payments_attributes].first[:source_attributes] = source_params