solidus_core 1.2.3 → 1.3.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

Files changed (573) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Rakefile +1 -1
  4. data/app/assets/javascripts/spree.js.coffee.erb +1 -1
  5. data/app/helpers/spree/base_helper.rb +21 -43
  6. data/app/helpers/spree/orders_helper.rb +0 -1
  7. data/app/helpers/spree/products_helper.rb +10 -12
  8. data/app/helpers/spree/taxons_helper.rb +4 -4
  9. data/app/mailers/spree/base_mailer.rb +1 -3
  10. data/app/mailers/spree/carton_mailer.rb +2 -2
  11. data/app/mailers/spree/order_mailer.rb +2 -2
  12. data/app/models/concerns/spree/adjustment_source.rb +12 -16
  13. data/app/models/concerns/spree/calculated_adjustments.rb +17 -14
  14. data/app/models/concerns/spree/default_price.rb +10 -26
  15. data/app/models/concerns/spree/display_money.rb +1 -1
  16. data/app/models/concerns/spree/ordered_property_value_list.rb +10 -12
  17. data/app/models/concerns/spree/ransackable_attributes.rb +6 -5
  18. data/app/models/concerns/spree/user_address_book.rb +87 -81
  19. data/app/models/concerns/spree/user_methods.rb +2 -2
  20. data/app/models/concerns/spree/user_payment_source.rb +12 -8
  21. data/app/models/spree/ability.rb +2 -2
  22. data/app/models/spree/address.rb +37 -38
  23. data/app/models/spree/adjustment.rb +2 -6
  24. data/app/models/spree/app_configuration.rb +60 -5
  25. data/app/models/spree/base.rb +1 -1
  26. data/app/models/spree/calculator/default_tax.rb +28 -24
  27. data/app/models/spree/calculator/flat_percent_item_total.rb +1 -1
  28. data/app/models/spree/calculator/flat_rate.rb +2 -2
  29. data/app/models/spree/calculator/flexi_rate.rb +4 -4
  30. data/app/models/spree/calculator/percent_per_item.rb +8 -9
  31. data/app/models/spree/calculator/price_sack.rb +3 -3
  32. data/app/models/spree/calculator/returns/default_refund_amount.rb +11 -12
  33. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -1
  34. data/app/models/spree/calculator/shipping/flat_rate.rb +2 -2
  35. data/app/models/spree/calculator/shipping/flexi_rate.rb +3 -3
  36. data/app/models/spree/calculator/shipping/per_item.rb +1 -1
  37. data/app/models/spree/calculator/shipping/price_sack.rb +3 -3
  38. data/app/models/spree/calculator/tiered_flat_rate.rb +2 -1
  39. data/app/models/spree/calculator/tiered_percent.rb +2 -1
  40. data/app/models/spree/calculator.rb +3 -3
  41. data/app/models/spree/carton.rb +2 -2
  42. data/app/models/spree/country.rb +7 -4
  43. data/app/models/spree/credit_card.rb +26 -22
  44. data/app/models/spree/customer_return.rb +8 -7
  45. data/app/models/spree/exchange.rb +1 -9
  46. data/app/models/spree/gateway/bogus.rb +31 -31
  47. data/app/models/spree/gateway/bogus_simple.rb +6 -8
  48. data/app/models/spree/gateway.rb +9 -15
  49. data/app/models/spree/image.rb +3 -3
  50. data/app/models/spree/inventory_unit.rb +23 -23
  51. data/app/models/spree/item_adjustments.rb +3 -2
  52. data/app/models/spree/legacy_user.rb +1 -5
  53. data/app/models/spree/line_item.rb +95 -84
  54. data/app/models/spree/option_type.rb +1 -1
  55. data/app/models/spree/option_value.rb +3 -1
  56. data/app/models/spree/order/checkout.rb +45 -44
  57. data/app/models/spree/order/payments.rb +42 -45
  58. data/app/models/spree/order.rb +70 -75
  59. data/app/models/spree/order_cancellations.rb +4 -4
  60. data/app/models/spree/order_capturing.rb +3 -2
  61. data/app/models/spree/order_contents.rb +61 -59
  62. data/app/models/spree/order_inventory.rb +59 -54
  63. data/app/models/spree/order_mutex.rb +0 -1
  64. data/app/models/spree/order_shipping.rb +8 -9
  65. data/app/models/spree/order_stock_location.rb +3 -3
  66. data/app/models/spree/order_update_attributes.rb +0 -2
  67. data/app/models/spree/order_updater.rb +11 -24
  68. data/app/models/spree/payment/processing.rb +26 -37
  69. data/app/models/spree/payment.rb +68 -71
  70. data/app/models/spree/payment_method/check.rb +2 -2
  71. data/app/models/spree/payment_method/store_credit.rb +6 -7
  72. data/app/models/spree/payment_method.rb +11 -8
  73. data/app/models/spree/preferences/configuration.rb +2 -2
  74. data/app/models/spree/preferences/preferable.rb +1 -1
  75. data/app/models/spree/preferences/preferable_class_methods.rb +1 -1
  76. data/app/models/spree/preferences/scoped_store.rb +6 -5
  77. data/app/models/spree/preferences/static_model_preferences.rb +1 -1
  78. data/app/models/spree/preferences/statically_configurable.rb +2 -2
  79. data/app/models/spree/preferences/store.rb +2 -6
  80. data/app/models/spree/price.rb +17 -19
  81. data/app/models/spree/product/scopes.rb +18 -17
  82. data/app/models/spree/product.rb +28 -11
  83. data/app/models/spree/product_property.rb +2 -0
  84. data/app/models/spree/product_scope/scopes.rb +22 -22
  85. data/app/models/spree/promotion/actions/create_adjustment.rb +3 -4
  86. data/app/models/spree/promotion/actions/create_item_adjustments.rb +8 -8
  87. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +3 -3
  88. data/app/models/spree/promotion/actions/free_shipping.rb +4 -4
  89. data/app/models/spree/promotion/rules/first_order.rb +7 -6
  90. data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +2 -3
  91. data/app/models/spree/promotion/rules/item_total.rb +5 -2
  92. data/app/models/spree/promotion/rules/nth_order.rb +3 -4
  93. data/app/models/spree/promotion/rules/one_use_per_user.rb +1 -2
  94. data/app/models/spree/promotion/rules/option_value.rb +1 -2
  95. data/app/models/spree/promotion/rules/product.rb +4 -4
  96. data/app/models/spree/promotion/rules/taxon.rb +5 -5
  97. data/app/models/spree/promotion/rules/user.rb +1 -1
  98. data/app/models/spree/promotion/rules/user_logged_in.rb +1 -1
  99. data/app/models/spree/promotion.rb +8 -8
  100. data/app/models/spree/promotion_action.rb +1 -1
  101. data/app/models/spree/promotion_builder.rb +2 -2
  102. data/app/models/spree/promotion_chooser.rb +1 -0
  103. data/app/models/spree/promotion_code/code_builder.rb +3 -3
  104. data/app/models/spree/promotion_handler/cart.rb +17 -16
  105. data/app/models/spree/promotion_handler/coupon.rb +10 -14
  106. data/app/models/spree/promotion_handler/page.rb +4 -4
  107. data/app/models/spree/promotion_rule.rb +4 -3
  108. data/app/models/spree/prototype.rb +0 -1
  109. data/app/models/spree/refund.rb +3 -3
  110. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -3
  111. data/app/models/spree/reimbursement.rb +3 -5
  112. data/app/models/spree/reimbursement_performer.rb +0 -5
  113. data/app/models/spree/reimbursement_tax_calculator.rb +2 -7
  114. data/app/models/spree/reimbursement_type/credit.rb +1 -1
  115. data/app/models/spree/reimbursement_type/original_payment.rb +1 -1
  116. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +3 -3
  117. data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
  118. data/app/models/spree/reimbursement_type.rb +1 -1
  119. data/app/models/spree/return_authorization.rb +38 -37
  120. data/app/models/spree/return_item/eligibility_validator/default.rb +4 -4
  121. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +0 -1
  122. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +0 -1
  123. data/app/models/spree/return_item.rb +24 -23
  124. data/app/models/spree/returns_calculator.rb +1 -2
  125. data/app/models/spree/shipment.rb +80 -74
  126. data/app/models/spree/shipping_calculator.rb +4 -5
  127. data/app/models/spree/shipping_manifest.rb +3 -4
  128. data/app/models/spree/shipping_method.rb +54 -23
  129. data/app/models/spree/shipping_method_stock_location.rb +4 -0
  130. data/app/models/spree/shipping_rate.rb +24 -29
  131. data/app/models/spree/shipping_rate_tax.rb +41 -0
  132. data/app/models/spree/state.rb +1 -1
  133. data/app/models/spree/state_change.rb +1 -1
  134. data/app/models/spree/stock/availability_validator.rb +2 -2
  135. data/app/models/spree/stock/coordinator.rb +12 -13
  136. data/app/models/spree/stock/differentiator.rb +1 -0
  137. data/app/models/spree/stock/estimator.rb +18 -25
  138. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  139. data/app/models/spree/stock/package.rb +19 -9
  140. data/app/models/spree/stock/packer.rb +2 -3
  141. data/app/models/spree/stock/prioritizer.rb +3 -2
  142. data/app/models/spree/stock/quantifier.rb +2 -3
  143. data/app/models/spree/stock/shipping_rate_selector.rb +0 -1
  144. data/app/models/spree/stock/shipping_rate_sorter.rb +0 -1
  145. data/app/models/spree/stock/splitter/backordered.rb +0 -2
  146. data/app/models/spree/stock/splitter/base.rb +3 -2
  147. data/app/models/spree/stock/splitter/shipping_category.rb +2 -1
  148. data/app/models/spree/stock/splitter/weight.rb +2 -2
  149. data/app/models/spree/stock_item.rb +36 -37
  150. data/app/models/spree/stock_location.rb +17 -13
  151. data/app/models/spree/stock_movement.rb +1 -3
  152. data/app/models/spree/stock_transfer.rb +8 -8
  153. data/app/models/spree/store.rb +6 -0
  154. data/app/models/spree/store_credit.rb +24 -24
  155. data/app/models/spree/store_credit_category.rb +1 -2
  156. data/app/models/spree/tax/item_adjuster.rb +37 -0
  157. data/app/models/spree/tax/order_adjuster.rb +38 -0
  158. data/app/models/spree/tax/shipping_rate_taxer.rb +31 -0
  159. data/app/models/spree/tax/tax_helpers.rb +49 -0
  160. data/app/models/spree/tax/tax_location.rb +33 -0
  161. data/app/models/spree/tax_category.rb +1 -1
  162. data/app/models/spree/tax_rate.rb +46 -111
  163. data/app/models/spree/taxon.rb +36 -12
  164. data/app/models/spree/taxonomy.rb +10 -10
  165. data/app/models/spree/validations/db_maximum_length_validator.rb +0 -1
  166. data/app/models/spree/variant/pricer.rb +19 -0
  167. data/app/models/spree/variant/pricing_options.rb +31 -0
  168. data/app/models/spree/variant/scopes.rb +9 -9
  169. data/app/models/spree/variant.rb +95 -89
  170. data/app/models/spree/variant_property_rule.rb +1 -1
  171. data/app/models/spree/variant_property_rule_value.rb +2 -0
  172. data/app/models/spree/zone.rb +60 -24
  173. data/config/initializers/friendly_id.rb +1 -1
  174. data/config/locales/en.yml +337 -51
  175. data/config/routes.rb +1 -1
  176. data/db/default/spree/countries.rb +9 -15
  177. data/db/default/spree/roles.rb +1 -2
  178. data/db/default/spree/states.rb +7 -11
  179. data/db/default/spree/store_credit.rb +2 -2
  180. data/db/default/spree/stores.rb +2 -1
  181. data/db/migrate/20120831092320_spree_one_two.rb +100 -101
  182. data/db/migrate/20120831092359_spree_promo_one_two.rb +12 -12
  183. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +1 -1
  184. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +1 -1
  185. data/db/migrate/20121010142909_add_states_required_to_countries.rb +1 -1
  186. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +2 -2
  187. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +4 -4
  188. data/db/migrate/20121031162139_split_prices_from_variants.rb +8 -8
  189. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +2 -2
  190. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +1 -1
  191. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +1 -1
  192. data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +1 -2
  193. data/db/migrate/20130211190146_create_spree_stock_items.rb +1 -1
  194. data/db/migrate/20130213191427_create_default_stock.rb +12 -21
  195. data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +1 -1
  196. data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +2 -2
  197. data/db/migrate/20130228210442_create_shipping_method_zone.rb +1 -1
  198. data/db/migrate/20130301162924_create_shipping_method_categories.rb +2 -2
  199. data/db/migrate/20130304162240_create_spree_shipping_rates.rb +4 -4
  200. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +2 -3
  201. data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +1 -1
  202. data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +1 -1
  203. data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +1 -1
  204. data/db/migrate/20130319062004_change_orders_total_precision.rb +4 -4
  205. data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +1 -3
  206. data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +2 -4
  207. data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +1 -3
  208. data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +2 -2
  209. data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +2 -2
  210. data/db/migrate/20130417120035_update_adjustment_states.rb +2 -2
  211. data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +3 -3
  212. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +1 -1
  213. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +3 -3
  214. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +1 -1
  215. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +2 -2
  216. data/db/migrate/20130807024301_upgrade_adjustments.rb +3 -3
  217. data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +1 -1
  218. data/db/migrate/20130813140619_expand_order_number_size.rb +2 -2
  219. data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +1 -1
  220. data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +1 -1
  221. data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +1 -1
  222. data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +1 -1
  223. data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +1 -1
  224. data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +1 -0
  225. data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +1 -1
  226. data/db/migrate/20131118043959_add_included_to_adjustments.rb +1 -1
  227. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +0 -1
  228. data/db/migrate/20131211112807_create_spree_orders_promotions.rb +1 -1
  229. data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +1 -1
  230. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +1 -0
  231. data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +1 -1
  232. data/db/migrate/20140309023735_migrate_old_preferences.rb +4 -3
  233. data/db/migrate/20140309033438_create_store_from_preferences.rb +2 -2
  234. data/db/migrate/20140410141842_add_many_missing_indexes.rb +13 -15
  235. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +38 -40
  236. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +4 -4
  237. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +1 -1
  238. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +0 -1
  239. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +4 -4
  240. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +4 -6
  241. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +1 -0
  242. data/db/migrate/20141217215630_update_product_slug_index.rb +2 -4
  243. data/db/migrate/20150112194216_add_position_to_stock_location.rb +2 -2
  244. data/db/migrate/20150225205344_move_promotion_code_to_promotion_code_value.rb +0 -1
  245. data/db/migrate/20150313201503_copy_shipped_shipments_to_cartons.rb +0 -1
  246. data/db/migrate/20150506181611_create_spree_store_credit_payment_method.rb +3 -3
  247. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -1
  248. data/db/migrate/20150612205731_remove_spree_configurations.rb +2 -2
  249. data/db/migrate/20150619160613_create_adjustment_reason.rb +1 -1
  250. data/db/migrate/20150723224133_remove_unnecessary_indexes.rb +10 -2
  251. data/db/migrate/20150731201146_add_spree_user_addresses.rb +0 -1
  252. data/db/migrate/20150811211025_add_finalized_to_spree_adjustments.rb +1 -1
  253. data/db/migrate/20151001121454_create_spree_shipping_method_stock_locations.rb +13 -0
  254. data/db/migrate/20151002023248_add_foreign_key_to_shipping_method_stock_location.rb +6 -0
  255. data/db/migrate/20151026093607_change_return_item_pre_tax_amount_to_amount.rb +29 -0
  256. data/db/migrate/20160111091912_add_column_available_to_all_on_spree_shipping_method.rb +5 -0
  257. data/db/migrate/20160116133604_add_position_to_spree_payment_methods.rb +5 -0
  258. data/db/migrate/20160122182105_add_carrier_and_service_level_to_spree_shipping_methods.rb +6 -0
  259. data/db/migrate/20160224201413_create_spree_shipping_rate_taxes.rb +11 -0
  260. data/db/migrate/20160229133259_add_cart_tax_country_iso_to_spree_store.rb +5 -0
  261. data/db/migrate/20160301103333_remove_pre_tax_amount_on_line_item_and_shipment.rb +6 -0
  262. data/db/migrate/20160308000300_disallow_adjustment_finalized_nulls.rb +19 -0
  263. data/db/migrate/20160318145302_add_timestamps_to_prices.rb +5 -0
  264. data/db/migrate/20160330204846_add_missing_timestamp_columns.rb +20 -0
  265. data/lib/generators/spree/custom_user/custom_user_generator.rb +3 -8
  266. data/lib/generators/spree/dummy/dummy_generator.rb +17 -19
  267. data/lib/generators/spree/install/install_generator.rb +15 -15
  268. data/lib/generators/spree/install/templates/config/initializers/spree.rb +1 -0
  269. data/lib/spree/core/controller_helpers/auth.rb +2 -4
  270. data/lib/spree/core/controller_helpers/common.rb +42 -43
  271. data/lib/spree/core/controller_helpers/order.rb +5 -9
  272. data/lib/spree/core/controller_helpers/payment_parameters.rb +4 -5
  273. data/lib/spree/core/controller_helpers/pricing.rb +27 -0
  274. data/lib/spree/core/controller_helpers/respond_with.rb +4 -4
  275. data/lib/spree/core/controller_helpers/search.rb +2 -2
  276. data/lib/spree/core/controller_helpers/store.rb +3 -3
  277. data/lib/spree/core/controller_helpers/strong_parameters.rb +4 -4
  278. data/lib/spree/core/current_store.rb +1 -1
  279. data/lib/spree/core/delegate_belongs_to.rb +19 -21
  280. data/lib/spree/core/engine.rb +12 -8
  281. data/lib/spree/core/environment/calculators.rb +0 -1
  282. data/lib/spree/core/environment_extension.rb +4 -4
  283. data/lib/spree/core/importer/order.rb +17 -22
  284. data/lib/spree/core/importer/product.rb +10 -9
  285. data/lib/spree/core/permalinks.rb +16 -16
  286. data/lib/spree/core/product_duplicator.rb +2 -3
  287. data/lib/spree/core/product_filters.rb +15 -16
  288. data/lib/spree/core/role_configuration.rb +2 -2
  289. data/lib/spree/core/search/base.rb +71 -57
  290. data/lib/spree/core/search/variant.rb +2 -4
  291. data/lib/spree/core/unreturned_item_charger.rb +1 -2
  292. data/lib/spree/core/validators/email.rb +2 -2
  293. data/lib/spree/core/version.rb +1 -1
  294. data/lib/spree/core.rb +2 -4
  295. data/lib/spree/i18n.rb +1 -1
  296. data/lib/spree/localized_number.rb +3 -1
  297. data/lib/spree/migrations.rb +27 -26
  298. data/lib/spree/money.rb +19 -4
  299. data/lib/spree/permission_sets/base.rb +1 -1
  300. data/lib/spree/permitted_attributes.rb +7 -7
  301. data/lib/spree/responder.rb +4 -5
  302. data/lib/spree/testing_support/authorization_helpers.rb +1 -1
  303. data/lib/spree/testing_support/caching.rb +8 -8
  304. data/lib/spree/testing_support/capybara_ext.rb +11 -13
  305. data/lib/spree/testing_support/common_rake.rb +4 -4
  306. data/lib/spree/testing_support/controller_requests.rb +1 -1
  307. data/lib/spree/testing_support/extension_rake.rb +1 -2
  308. data/lib/spree/testing_support/factories/address_factory.rb +14 -3
  309. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
  310. data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
  311. data/lib/spree/testing_support/factories/credit_card_factory.rb +4 -0
  312. data/lib/spree/testing_support/factories/customer_return_factory.rb +4 -6
  313. data/lib/spree/testing_support/factories/line_item_factory.rb +1 -1
  314. data/lib/spree/testing_support/factories/order_factory.rb +10 -11
  315. data/lib/spree/testing_support/factories/payment_factory.rb +5 -0
  316. data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -1
  317. data/lib/spree/testing_support/factories/promotion_factory.rb +0 -1
  318. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  319. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  320. data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
  321. data/lib/spree/testing_support/factories/shipping_method_factory.rb +5 -2
  322. data/lib/spree/testing_support/factories/state_factory.rb +17 -7
  323. data/lib/spree/testing_support/factories/stock_location_factory.rb +4 -4
  324. data/lib/spree/testing_support/factories/stock_transfer_factory.rb +1 -1
  325. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +0 -1
  326. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +0 -2
  327. data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -2
  328. data/lib/spree/testing_support/factories/user_factory.rb +1 -1
  329. data/lib/spree/testing_support/factories/variant_factory.rb +1 -2
  330. data/lib/spree/testing_support/factories/zone_factory.rb +2 -1
  331. data/lib/spree/testing_support/i18n.rb +4 -5
  332. data/lib/spree/testing_support/order_walkthrough.rb +8 -9
  333. data/lib/spree/testing_support/preferences.rb +1 -1
  334. data/lib/spree/testing_support/sequences.rb +5 -4
  335. data/lib/tasks/core.rake +15 -19
  336. data/lib/tasks/email.rake +3 -3
  337. data/lib/tasks/exchanges.rake +12 -14
  338. data/lib/tasks/migrations/assure_store_on_orders.rake +38 -0
  339. data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +2 -2
  340. data/lib/tasks/migrations/copy_shipped_shipments_to_cartons.rake +1 -11
  341. data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +17 -0
  342. data/lib/tasks/migrations/migrate_user_addresses.rake +1 -1
  343. data/lib/tasks/order_capturing.rake +1 -1
  344. data/lib/tasks/upgrade.rake +11 -0
  345. data/script/rails +0 -1
  346. data/solidus_core.gemspec +6 -8
  347. data/spec/helpers/base_helper_spec.rb +15 -18
  348. data/spec/helpers/order_helper_spec.rb +2 -2
  349. data/spec/helpers/products_helper_spec.rb +43 -51
  350. data/spec/helpers/taxons_helper_spec.rb +1 -1
  351. data/spec/lib/i18n_spec.rb +11 -11
  352. data/spec/lib/search/base_spec.rb +12 -14
  353. data/spec/lib/search/variant_spec.rb +1 -0
  354. data/spec/lib/spree/core/controller_helpers/order_spec.rb +1 -7
  355. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +26 -28
  356. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +63 -0
  357. data/spec/lib/spree/core/controller_helpers/search_spec.rb +4 -2
  358. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +1 -1
  359. data/spec/lib/spree/core/importer/order_spec.rb +95 -90
  360. data/spec/lib/spree/core/role_configuration_spec.rb +16 -16
  361. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +35 -0
  362. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +10 -1
  363. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -1
  364. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +6 -1
  365. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +37 -1
  366. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +2 -2
  367. data/spec/lib/spree/core/testing_support/factories/stock_packer_factory_spec.rb +1 -1
  368. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +1 -2
  369. data/spec/lib/spree/core/testing_support/preferences_spec.rb +26 -0
  370. data/spec/lib/spree/core/unreturned_item_charger_spec.rb +7 -9
  371. data/spec/lib/spree/core/validators/email_spec.rb +8 -6
  372. data/spec/lib/spree/localized_number_spec.rb +1 -3
  373. data/spec/lib/spree/migrations_spec.rb +2 -2
  374. data/spec/lib/spree/money_spec.rb +75 -6
  375. data/spec/lib/tasks/exchanges_spec.rb +2 -12
  376. data/spec/lib/tasks/migrations/copy_shipped_shipments_to_cartons_spec.rb +0 -1
  377. data/spec/lib/tasks/order_capturing_spec.rb +1 -1
  378. data/spec/mailers/carton_mailer_spec.rb +3 -3
  379. data/spec/mailers/order_mailer_spec.rb +9 -11
  380. data/spec/mailers/reimbursement_mailer_spec.rb +2 -2
  381. data/spec/mailers/test_mailer_spec.rb +1 -1
  382. data/spec/models/spree/ability_spec.rb +4 -7
  383. data/spec/models/spree/address_spec.rb +32 -35
  384. data/spec/models/spree/adjustment_reason_spec.rb +0 -2
  385. data/spec/models/spree/adjustment_spec.rb +2 -2
  386. data/spec/models/spree/app_configuration_spec.rb +33 -3
  387. data/spec/models/spree/asset_spec.rb +1 -2
  388. data/spec/models/spree/calculator/default_tax_spec.rb +141 -52
  389. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +1 -1
  390. data/spec/models/spree/calculator/flexi_rate_spec.rb +6 -6
  391. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +1 -1
  392. data/spec/models/spree/calculator/price_sack_spec.rb +2 -2
  393. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +9 -11
  394. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +4 -4
  395. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +2 -2
  396. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +6 -7
  397. data/spec/models/spree/calculator/shipping/per_item_spec.rb +2 -2
  398. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +2 -2
  399. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +1 -2
  400. data/spec/models/spree/calculator/tiered_percent_spec.rb +1 -1
  401. data/spec/models/spree/calculator_spec.rb +3 -8
  402. data/spec/models/spree/carton_spec.rb +1 -1
  403. data/spec/models/spree/classification_spec.rb +1 -1
  404. data/spec/models/spree/concerns/display_money_spec.rb +0 -1
  405. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +26 -1
  406. data/spec/models/spree/concerns/user_address_book_spec.rb +19 -12
  407. data/spec/models/spree/concerns/user_methods_spec.rb +1 -1
  408. data/spec/models/spree/country_spec.rb +52 -0
  409. data/spec/models/spree/credit_card_spec.rb +17 -12
  410. data/spec/models/spree/customer_return_spec.rb +27 -23
  411. data/spec/models/spree/exchange_spec.rb +2 -7
  412. data/spec/models/spree/gateway/bogus_simple.rb +2 -4
  413. data/spec/models/spree/gateway/bogus_spec.rb +4 -2
  414. data/spec/models/spree/gateway_spec.rb +8 -3
  415. data/spec/models/spree/inventory_unit_spec.rb +13 -14
  416. data/spec/models/spree/item_adjustments_spec.rb +36 -40
  417. data/spec/models/spree/line_item_spec.rb +92 -48
  418. data/spec/models/spree/option_type_spec.rb +1 -1
  419. data/spec/models/spree/option_value_spec.rb +1 -1
  420. data/spec/models/spree/order/address_spec.rb +1 -1
  421. data/spec/models/spree/order/callbacks_spec.rb +3 -3
  422. data/spec/models/spree/order/checkout_spec.rb +55 -48
  423. data/spec/models/spree/order/finalizing_spec.rb +8 -9
  424. data/spec/models/spree/order/payment_spec.rb +20 -20
  425. data/spec/models/spree/order/risk_assessment_spec.rb +1 -1
  426. data/spec/models/spree/order/state_machine_spec.rb +40 -131
  427. data/spec/models/spree/order/tax_spec.rb +11 -12
  428. data/spec/models/spree/order/totals_spec.rb +3 -3
  429. data/spec/models/spree/order/updating_spec.rb +2 -2
  430. data/spec/models/spree/order/validations_spec.rb +2 -2
  431. data/spec/models/spree/order_cancellations_spec.rb +1 -1
  432. data/spec/models/spree/order_capturing_spec.rb +1 -1
  433. data/spec/models/spree/order_contents_spec.rb +10 -11
  434. data/spec/models/spree/order_inventory_spec.rb +11 -11
  435. data/spec/models/spree/order_merger_spec.rb +1 -0
  436. data/spec/models/spree/order_shipping_spec.rb +8 -10
  437. data/spec/models/spree/order_spec.rb +137 -124
  438. data/spec/models/spree/order_stock_location_spec.rb +2 -2
  439. data/spec/models/spree/order_update_attributes_spec.rb +6 -10
  440. data/spec/models/spree/order_updater_spec.rb +4 -8
  441. data/spec/models/spree/payment_create_spec.rb +11 -12
  442. data/spec/models/spree/payment_method/store_credit_spec.rb +10 -6
  443. data/spec/models/spree/payment_method_spec.rb +4 -5
  444. data/spec/models/spree/payment_spec.rb +61 -69
  445. data/spec/models/spree/permission_sets/base_spec.rb +1 -1
  446. data/spec/models/spree/permission_sets/configuration_display.rb +0 -1
  447. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -1
  448. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -1
  449. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -1
  450. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -1
  451. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -1
  452. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -1
  453. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -1
  454. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -1
  455. data/spec/models/spree/permission_sets/report_display_spec.rb +0 -1
  456. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -1
  457. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -1
  458. data/spec/models/spree/permission_sets/restricted_stock_transfer_display_spec.rb +0 -1
  459. data/spec/models/spree/permission_sets/restricted_stock_transfer_management_spec.rb +6 -6
  460. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -1
  461. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -1
  462. data/spec/models/spree/permission_sets/stock_transfer_display_spec.rb +0 -1
  463. data/spec/models/spree/permission_sets/stock_transfer_management_spec.rb +0 -2
  464. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -1
  465. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -1
  466. data/spec/models/spree/preference_spec.rb +1 -4
  467. data/spec/models/spree/preferences/configuration_spec.rb +2 -7
  468. data/spec/models/spree/preferences/preferable_spec.rb +13 -24
  469. data/spec/models/spree/preferences/scoped_store_spec.rb +1 -1
  470. data/spec/models/spree/preferences/static_model_preferences_spec.rb +5 -6
  471. data/spec/models/spree/preferences/statically_configurable_spec.rb +2 -6
  472. data/spec/models/spree/preferences/store_spec.rb +2 -3
  473. data/spec/models/spree/price_spec.rb +6 -6
  474. data/spec/models/spree/product/scopes_spec.rb +20 -20
  475. data/spec/models/spree/product_duplicator_spec.rb +16 -29
  476. data/spec/models/spree/product_filter_spec.rb +2 -2
  477. data/spec/models/spree/product_spec.rb +53 -20
  478. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +10 -12
  479. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +4 -4
  480. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +9 -9
  481. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +1 -1
  482. data/spec/models/spree/promotion/rules/first_order_spec.rb +10 -10
  483. data/spec/models/spree/promotion/rules/item_total_spec.rb +63 -19
  484. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +1 -1
  485. data/spec/models/spree/promotion/rules/product_spec.rb +8 -8
  486. data/spec/models/spree/promotion/rules/taxon_spec.rb +4 -4
  487. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +3 -4
  488. data/spec/models/spree/promotion/rules/user_spec.rb +7 -7
  489. data/spec/models/spree/promotion_builder_spec.rb +10 -8
  490. data/spec/models/spree/promotion_category_spec.rb +1 -1
  491. data/spec/models/spree/promotion_code/code_builder_spec.rb +1 -3
  492. data/spec/models/spree/promotion_code_spec.rb +8 -7
  493. data/spec/models/spree/promotion_handler/cart_spec.rb +1 -1
  494. data/spec/models/spree/promotion_handler/coupon_spec.rb +28 -28
  495. data/spec/models/spree/promotion_handler/page_spec.rb +6 -7
  496. data/spec/models/spree/promotion_rule_spec.rb +1 -2
  497. data/spec/models/spree/promotion_spec.rb +25 -21
  498. data/spec/models/spree/refund_spec.rb +8 -11
  499. data/spec/models/spree/reimbursement/credit_spec.rb +2 -2
  500. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +6 -4
  501. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +1 -1
  502. data/spec/models/spree/reimbursement_performer_spec.rb +2 -2
  503. data/spec/models/spree/reimbursement_spec.rb +9 -11
  504. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +4 -5
  505. data/spec/models/spree/reimbursement_type/credit_spec.rb +2 -2
  506. data/spec/models/spree/reimbursement_type/exchange_spec.rb +2 -3
  507. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +4 -4
  508. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +1 -1
  509. data/spec/models/spree/return_authorization_spec.rb +18 -21
  510. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +7 -7
  511. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -1
  512. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -1
  513. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +1 -1
  514. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +1 -1
  515. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +1 -2
  516. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +3 -5
  517. data/spec/models/spree/return_item_spec.rb +29 -31
  518. data/spec/models/spree/returns_calculator_spec.rb +1 -1
  519. data/spec/models/spree/shipment_spec.rb +59 -43
  520. data/spec/models/spree/shipping_calculator_spec.rb +3 -3
  521. data/spec/models/spree/shipping_manifest_spec.rb +8 -7
  522. data/spec/models/spree/shipping_method_spec.rb +149 -24
  523. data/spec/models/spree/shipping_rate_spec.rb +116 -76
  524. data/spec/models/spree/shipping_rate_tax_spec.rb +83 -0
  525. data/spec/models/spree/state_spec.rb +2 -2
  526. data/spec/models/spree/stock/availability_validator_spec.rb +4 -4
  527. data/spec/models/spree/stock/coordinator_spec.rb +33 -49
  528. data/spec/models/spree/stock/differentiator_spec.rb +1 -1
  529. data/spec/models/spree/stock/estimator_spec.rb +83 -54
  530. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +1 -3
  531. data/spec/models/spree/stock/package_spec.rb +27 -10
  532. data/spec/models/spree/stock/packer_spec.rb +4 -4
  533. data/spec/models/spree/stock/prioritizer_spec.rb +1 -1
  534. data/spec/models/spree/stock/quantifier_spec.rb +2 -6
  535. data/spec/models/spree/stock/splitter/backordered_spec.rb +1 -1
  536. data/spec/models/spree/stock/splitter/base_spec.rb +1 -2
  537. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +1 -3
  538. data/spec/models/spree/stock/splitter/weight_spec.rb +3 -3
  539. data/spec/models/spree/stock_item_spec.rb +16 -16
  540. data/spec/models/spree/stock_location_spec.rb +6 -8
  541. data/spec/models/spree/stock_movement_spec.rb +1 -1
  542. data/spec/models/spree/stock_transfer_spec.rb +1 -3
  543. data/spec/models/spree/store_credit_category_spec.rb +1 -1
  544. data/spec/models/spree/store_credit_event_spec.rb +3 -5
  545. data/spec/models/spree/store_credit_spec.rb +24 -23
  546. data/spec/models/spree/store_spec.rb +21 -2
  547. data/spec/models/spree/tax/item_adjuster_spec.rb +74 -0
  548. data/spec/models/spree/tax/order_adjuster_spec.rb +49 -0
  549. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +50 -0
  550. data/spec/models/spree/tax/tax_location_spec.rb +68 -0
  551. data/spec/models/spree/tax/taxation_integration_spec.rb +787 -0
  552. data/spec/models/spree/tax_category_spec.rb +2 -2
  553. data/spec/models/spree/tax_rate_spec.rb +185 -536
  554. data/spec/models/spree/taxon_spec.rb +69 -5
  555. data/spec/models/spree/taxonomy_spec.rb +2 -3
  556. data/spec/models/spree/tracker_spec.rb +1 -1
  557. data/spec/models/spree/transfer_item_spec.rb +1 -1
  558. data/spec/models/spree/unit_cancel_spec.rb +9 -14
  559. data/spec/models/spree/user_spec.rb +19 -24
  560. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +1 -1
  561. data/spec/models/spree/variant/pricer_spec.rb +48 -0
  562. data/spec/models/spree/variant/pricing_options_spec.rb +106 -0
  563. data/spec/models/spree/variant/scopes_spec.rb +31 -8
  564. data/spec/models/spree/variant_property_rule_spec.rb +1 -1
  565. data/spec/models/spree/variant_spec.rb +166 -52
  566. data/spec/models/spree/zone_spec.rb +135 -10
  567. data/spec/support/big_decimal.rb +1 -1
  568. data/spec/support/concerns/working_factories.rb +2 -2
  569. data/spec/support/dummy_ability.rb +0 -1
  570. metadata +55 -44
  571. data/lib/generators/spree/dummy/templates/initializers/devise.rb +0 -3
  572. data/lib/spree/migration_helpers.rb +0 -19
  573. data/vendor/assets/stylesheets/skeleton.css +0 -242
@@ -16,7 +16,7 @@ module Spree
16
16
  attr_reader :line_item, :order
17
17
  attr_accessor :error, :success
18
18
 
19
- def initialize(order, line_item=nil)
19
+ def initialize(order, line_item = nil)
20
20
  @order, @line_item = order, line_item
21
21
  end
22
22
 
@@ -29,24 +29,25 @@ module Spree
29
29
  end
30
30
 
31
31
  private
32
- def promotions
33
- connected_order_promotions | sale_promotions
34
- end
35
32
 
36
- def connected_order_promotions
37
- Promotion.active.includes(:promotion_rules).
38
- joins(:order_promotions).
39
- where(spree_orders_promotions: { order_id: order.id }).readonly(false).to_a
40
- end
33
+ def promotions
34
+ connected_order_promotions | sale_promotions
35
+ end
41
36
 
42
- def sale_promotions
43
- Promotion.where(apply_automatically: true).active.includes(:promotion_rules)
44
- end
37
+ def connected_order_promotions
38
+ Promotion.active.includes(:promotion_rules).
39
+ joins(:order_promotions).
40
+ where(spree_orders_promotions: { order_id: order.id }).readonly(false).to_a
41
+ end
45
42
 
46
- def promotion_code(promotion)
47
- order_promotion = Spree::OrderPromotion.where(order: order, promotion: promotion).first
48
- order_promotion.present? ? order_promotion.promotion_code : nil
49
- end
43
+ def sale_promotions
44
+ Promotion.where(apply_automatically: true).active.includes(:promotion_rules)
45
+ end
46
+
47
+ def promotion_code(promotion)
48
+ order_promotion = Spree::OrderPromotion.where(order: order, promotion: promotion).first
49
+ order_promotion.present? ? order_promotion.promotion_code : nil
50
+ end
50
51
  end
51
52
  end
52
53
  end
@@ -12,12 +12,10 @@ module Spree
12
12
  if order.coupon_code.present?
13
13
  if promotion.present? && promotion.actions.exists?
14
14
  handle_present_promotion(promotion)
15
+ elsif promotion_code && promotion_code.promotion.expired?
16
+ set_error_code :coupon_code_expired
15
17
  else
16
- if promotion_code && promotion_code.promotion.expired?
17
- set_error_code :coupon_code_expired
18
- else
19
- set_error_code :coupon_code_not_found
20
- end
18
+ set_error_code :coupon_code_not_found
21
19
  end
22
20
  end
23
21
 
@@ -57,7 +55,7 @@ module Spree
57
55
  return promotion_applied if promotion_exists_on_order?(order, promotion)
58
56
  unless promotion.eligible?(order, promotion_code: promotion_code)
59
57
  self.error = promotion.eligibility_errors.full_messages.first unless promotion.eligibility_errors.blank?
60
- return (self.error || ineligible_for_this_order)
58
+ return (error || ineligible_for_this_order)
61
59
  end
62
60
 
63
61
  # If any of the actions for the promotion return `true`,
@@ -88,7 +86,7 @@ module Spree
88
86
 
89
87
  def determine_promotion_application_result
90
88
  detector = lambda { |p|
91
- p.source.promotion.codes.any? { |code| code.value == order.coupon_code.downcase }
89
+ p.source.promotion.codes.where(value: order.coupon_code.downcase).any?
92
90
  }
93
91
 
94
92
  # Check for applied adjustments.
@@ -103,15 +101,13 @@ module Spree
103
101
  order.update_totals
104
102
  order.persist_totals
105
103
  set_success_code :coupon_code_applied
106
- else
104
+ elsif order.promotions.with_coupon_code(order.coupon_code)
107
105
  # if the promotion exists on an order, but wasn't found above,
108
106
  # we've already selected a better promotion
109
- if order.promotions.with_coupon_code(order.coupon_code)
110
- set_error_code :coupon_code_better_exists
111
- else
112
- # if the promotion was created after the order
113
- set_error_code :coupon_code_not_found
114
- end
107
+ set_error_code :coupon_code_better_exists
108
+ else
109
+ # if the promotion was created after the order
110
+ set_error_code :coupon_code_not_found
115
111
  end
116
112
  end
117
113
  end
@@ -10,15 +10,15 @@ module Spree
10
10
 
11
11
  def activate
12
12
  if promotion && promotion.eligible?(order)
13
- promotion.activate(:order => order)
13
+ promotion.activate(order: order)
14
14
  end
15
15
  end
16
16
 
17
17
  private
18
18
 
19
- def promotion
20
- @promotion ||= Promotion.active.find_by(:path => path)
21
- end
19
+ def promotion
20
+ @promotion ||= Promotion.active.find_by(path: path)
21
+ end
22
22
  end
23
23
  end
24
24
  end
@@ -12,17 +12,17 @@ module Spree
12
12
  all.select { |rule| rule.applicable?(promotable) }
13
13
  end
14
14
 
15
- def applicable?(promotable)
15
+ def applicable?(_promotable)
16
16
  raise NotImplementedError, "applicable? should be implemented in a sub-class of Spree::PromotionRule"
17
17
  end
18
18
 
19
- def eligible?(promotable, options = {})
19
+ def eligible?(_promotable, _options = {})
20
20
  raise NotImplementedError, "eligible? should be implemented in a sub-class of Spree::PromotionRule"
21
21
  end
22
22
 
23
23
  # This states if a promotion can be applied to the specified line item
24
24
  # It is true by default, but can be overridden by promotion rules to provide conditions
25
- def actionable?(line_item)
25
+ def actionable?(_line_item)
26
26
  true
27
27
  end
28
28
 
@@ -31,6 +31,7 @@ module Spree
31
31
  end
32
32
 
33
33
  private
34
+
34
35
  def unique_per_promotion
35
36
  if Spree::PromotionRule.exists?(promotion_id: promotion_id, type: self.class.name)
36
37
  errors[:base] << "Promotion already contains this rule type"
@@ -1,6 +1,5 @@
1
1
  module Spree
2
2
  class Prototype < Spree::Base
3
-
4
3
  has_many :property_prototypes
5
4
  has_many :properties, through: :property_prototypes
6
5
 
@@ -9,7 +9,7 @@ module Spree
9
9
  validates :payment, presence: true
10
10
  validates :reason, presence: true
11
11
  validates :transaction_id, presence: true, on: :update # can't require this on create because the before_create needs to run first
12
- validates :amount, presence: true, numericality: {greater_than: 0}
12
+ validates :amount, presence: true, numericality: { greater_than: 0 }
13
13
 
14
14
  validate :amount_is_less_than_or_equal_to_allowed_amount, on: :create
15
15
 
@@ -52,9 +52,9 @@ module Spree
52
52
  # return an activemerchant response object if successful or else raise an error
53
53
  def process!(credit_cents)
54
54
  response = if payment.payment_method.payment_profiles_supported?
55
- payment.payment_method.credit(credit_cents, payment.source, payment.transaction_id, {originator: self})
55
+ payment.payment_method.credit(credit_cents, payment.source, payment.transaction_id, { originator: self })
56
56
  else
57
- payment.payment_method.credit(credit_cents, payment.transaction_id, {originator: self})
57
+ payment.payment_method.credit(credit_cents, payment.transaction_id, { originator: self })
58
58
  end
59
59
 
60
60
  if !response.success?
@@ -16,7 +16,7 @@ module Spree
16
16
 
17
17
  def initialize(return_items)
18
18
  @return_items = return_items
19
- @reimbursement_type_hash = Hash.new {|h,k| h[k] = Array.new }
19
+ @reimbursement_type_hash = Hash.new { |h, k| h[k] = [] }
20
20
  end
21
21
 
22
22
  def calculate_reimbursement_types
@@ -38,8 +38,6 @@ module Spree
38
38
  elsif return_item.preferred_reimbursement_type.present?
39
39
  if valid_preferred_reimbursement_type?(return_item)
40
40
  return_item.preferred_reimbursement_type.class
41
- else
42
- nil
43
41
  end
44
42
  elsif past_reimbursable_time_period?(return_item)
45
43
  expired_reimbursement_type
@@ -57,7 +57,6 @@ module Spree
57
57
  self.reimbursement_failure_hooks = []
58
58
 
59
59
  state_machine :reimbursement_status, initial: :pending do
60
-
61
60
  event :errored do
62
61
  transition to: :errored, from: [:pending, :errored]
63
62
  end
@@ -65,7 +64,6 @@ module Spree
65
64
  event :reimbursed do
66
65
  transition to: :reimbursed, from: [:pending, :errored]
67
66
  end
68
-
69
67
  end
70
68
 
71
69
  class << self
@@ -73,7 +71,7 @@ module Spree
73
71
  order = customer_return.order
74
72
  order.reimbursements.build({
75
73
  customer_return: customer_return,
76
- return_items: customer_return.return_items.accepted.not_reimbursed,
74
+ return_items: customer_return.return_items.accepted.not_reimbursed
77
75
  })
78
76
  end
79
77
  end
@@ -150,7 +148,7 @@ module Spree
150
148
 
151
149
  def generate_number
152
150
  self.number ||= loop do
153
- random = "RI#{Array.new(9){rand(9)}.join}"
151
+ random = "RI#{Array.new(9){ rand(9) }.join}"
154
152
  break random unless self.class.exists?(number: random)
155
153
  end
156
154
  end
@@ -162,7 +160,7 @@ module Spree
162
160
  end
163
161
 
164
162
  def send_reimbursement_email
165
- Spree::ReimbursementMailer.reimbursement_email(self.id).deliver_later
163
+ Spree::ReimbursementMailer.reimbursement_email(id).deliver_later
166
164
  end
167
165
 
168
166
  # If there are multiple different reimbursement types for a single
@@ -1,7 +1,5 @@
1
1
  module Spree
2
-
3
2
  class ReimbursementPerformer
4
-
5
3
  class << self
6
4
  class_attribute :reimbursement_type_engine
7
5
  self.reimbursement_type_engine = Spree::Reimbursement::ReimbursementTypeEngine
@@ -35,9 +33,6 @@ module Spree
35
33
  # {Spree::ReimbursementType::OriginalPayment => [ReturnItem, ...], Spree::ReimbursementType::Exchange => [ReturnItem, ...]}
36
34
  reimbursement_type_engine.new(reimbursement.return_items).calculate_reimbursement_types
37
35
  end
38
-
39
36
  end
40
-
41
37
  end
42
-
43
38
  end
@@ -1,5 +1,4 @@
1
1
  module Spree
2
-
3
2
  # Tax calculation is broken out at this level to allow easy integration with 3rd party
4
3
  # taxation systems. Those systems are usually geared toward calculating all items at once
5
4
  # rather than one at a time.
@@ -9,9 +8,7 @@ module Spree
9
8
  # where `calculator_object` is an object that responds to "call" and accepts a reimbursement object
10
9
 
11
10
  class ReimbursementTaxCalculator
12
-
13
11
  class << self
14
-
15
12
  def call(reimbursement)
16
13
  reimbursement.return_items.includes(:inventory_unit).each do |return_item|
17
14
  set_tax!(return_item)
@@ -21,18 +18,16 @@ module Spree
21
18
  private
22
19
 
23
20
  def set_tax!(return_item)
24
- percent_of_tax = (return_item.pre_tax_amount <= 0) ? 0 : return_item.pre_tax_amount / Spree::ReturnItem.refund_amount_calculator.new.compute(return_item)
21
+ percent_of_tax = (return_item.amount <= 0) ? 0 : return_item.amount / Spree::ReturnItem.refund_amount_calculator.new.compute(return_item)
25
22
 
26
23
  additional_tax_total = percent_of_tax * return_item.inventory_unit.additional_tax_total
27
24
  included_tax_total = percent_of_tax * return_item.inventory_unit.included_tax_total
28
25
 
29
26
  return_item.update_attributes!({
30
27
  additional_tax_total: additional_tax_total,
31
- included_tax_total: included_tax_total,
28
+ included_tax_total: included_tax_total
32
29
  })
33
30
  end
34
31
  end
35
-
36
32
  end
37
-
38
33
  end
@@ -5,7 +5,7 @@ module Spree
5
5
  class << self
6
6
  def reimburse(reimbursement, return_items, simulate)
7
7
  unpaid_amount = return_items.sum(&:total).round(2, :down)
8
- reimbursement_list, unpaid_amount = create_credits(reimbursement, unpaid_amount, simulate)
8
+ reimbursement_list, _unpaid_amount = create_credits(reimbursement, unpaid_amount, simulate)
9
9
  reimbursement_list
10
10
  end
11
11
  end
@@ -6,7 +6,7 @@ class Spree::ReimbursementType::OriginalPayment < Spree::ReimbursementType
6
6
  unpaid_amount = return_items.sum(&:total).round(2, :down)
7
7
  payments = reimbursement.order.payments.completed
8
8
 
9
- refund_list, unpaid_amount = create_refunds(reimbursement, payments, unpaid_amount, simulate)
9
+ refund_list, _unpaid_amount = create_refunds(reimbursement, payments, unpaid_amount, simulate)
10
10
  refund_list
11
11
  end
12
12
  end
@@ -15,7 +15,7 @@ module Spree
15
15
  unpaid_amount -= amount
16
16
  end
17
17
 
18
- return reimbursement_list, unpaid_amount
18
+ [reimbursement_list, unpaid_amount]
19
19
  end
20
20
 
21
21
  def create_credits(reimbursement, unpaid_amount, simulate, reimbursement_list = [])
@@ -23,7 +23,7 @@ module Spree
23
23
  unpaid_amount -= credits.sum(&:amount)
24
24
  reimbursement_list += credits
25
25
 
26
- return reimbursement_list, unpaid_amount
26
+ [reimbursement_list, unpaid_amount]
27
27
  end
28
28
 
29
29
  private
@@ -32,7 +32,7 @@ module Spree
32
32
  refund = reimbursement.refunds.build({
33
33
  payment: payment,
34
34
  amount: amount,
35
- reason: Spree::RefundReason.return_processing_reason,
35
+ reason: Spree::RefundReason.return_processing_reason
36
36
  })
37
37
 
38
38
  simulate ? refund.readonly! : refund.save!
@@ -12,7 +12,7 @@ class Spree::ReimbursementType::StoreCredit < Spree::ReimbursementType
12
12
 
13
13
  # If there is any amount left to pay out to the customer, then create credit with that amount
14
14
  if unpaid_amount > 0.0
15
- reimbursement_list, unpaid_amount = create_credits(reimbursement, unpaid_amount, simulate, reimbursement_list)
15
+ reimbursement_list, _unpaid_amount = create_credits(reimbursement, unpaid_amount, simulate, reimbursement_list)
16
16
  end
17
17
 
18
18
  reimbursement_list
@@ -9,7 +9,7 @@ module Spree
9
9
  # This method will reimburse the return items based on however it child implements it
10
10
  # By default it takes a reimbursement, the return items it needs to reimburse, and if
11
11
  # it is a simulation or a real reimbursement. This should return an array
12
- def self.reimburse(reimbursement, return_items, simulate)
12
+ def self.reimburse(_reimbursement, _return_items, _simulate)
13
13
  raise "Implement me"
14
14
  end
15
15
  end
@@ -20,7 +20,6 @@ module Spree
20
20
  validate :must_have_shipped_units, on: :create
21
21
  validate :no_previously_exchanged_inventory_units, on: :create
22
22
 
23
-
24
23
  # These are called prior to generating expedited exchanges shipments.
25
24
  # Should respond to a "call" method that takes the list of return items
26
25
  class_attribute :pre_expedited_exchange_hooks
@@ -32,24 +31,27 @@ module Spree
32
31
  event :cancel do
33
32
  transition to: :canceled, from: :authorized, if: lambda { |return_authorization| return_authorization.can_cancel_return_items? }
34
33
  end
35
-
36
34
  end
37
35
 
38
36
  extend DisplayMoney
39
- money_methods :pre_tax_total
37
+ money_methods :pre_tax_total, :amount
40
38
 
41
39
  self.whitelisted_ransackable_attributes = ['memo']
42
40
 
43
41
  def pre_tax_total
44
- return_items.sum(:pre_tax_amount)
42
+ return_items.map(&:pre_tax_amount).sum
43
+ end
44
+
45
+ def amount
46
+ return_item.sum(:amount)
45
47
  end
46
48
 
47
49
  def currency
48
- order.nil? ? Spree::Config[:currency] : order.currency
50
+ order.currency
49
51
  end
50
52
 
51
53
  def refundable_amount
52
- order.pre_tax_item_amount + order.promo_total
54
+ order.discounted_item_amount + order.promo_total
53
55
  end
54
56
 
55
57
  def customer_returned_items?
@@ -62,49 +64,48 @@ module Spree
62
64
 
63
65
  private
64
66
 
65
- def must_have_shipped_units
66
- if order.nil? || order.inventory_units.shipped.none?
67
- errors.add(:order, Spree.t(:has_no_shipped_units))
68
- end
69
- end
70
-
71
- def generate_number
72
- self.number ||= loop do
73
- random = "RA#{Array.new(9){rand(9)}.join}"
74
- break random unless self.class.exists?(number: random)
75
- end
67
+ def must_have_shipped_units
68
+ if order.nil? || order.inventory_units.shipped.none?
69
+ errors.add(:order, Spree.t(:has_no_shipped_units))
76
70
  end
71
+ end
77
72
 
78
- def no_previously_exchanged_inventory_units
79
- if return_items.map(&:inventory_unit).any?(&:exchange_requested?)
80
- errors.add(:base, Spree.t(:return_items_cannot_be_created_for_inventory_units_that_are_already_awaiting_exchange))
81
- end
73
+ def generate_number
74
+ self.number ||= loop do
75
+ random = "RA#{Array.new(9){ rand(9) }.join}"
76
+ break random unless self.class.exists?(number: random)
82
77
  end
78
+ end
83
79
 
84
- def cancel_return_items
85
- return_items.each { |item| item.cancel! if item.can_cancel? }
80
+ def no_previously_exchanged_inventory_units
81
+ if return_items.map(&:inventory_unit).any?(&:exchange_requested?)
82
+ errors.add(:base, Spree.t(:return_items_cannot_be_created_for_inventory_units_that_are_already_awaiting_exchange))
86
83
  end
84
+ end
87
85
 
88
- def generate_expedited_exchange_reimbursements
89
- return unless Spree::Config[:expedited_exchanges]
86
+ def cancel_return_items
87
+ return_items.each { |item| item.cancel! if item.can_cancel? }
88
+ end
90
89
 
91
- items_to_exchange = return_items.select(&:exchange_required?)
92
- items_to_exchange.each(&:attempt_accept)
93
- items_to_exchange.select!(&:accepted?)
90
+ def generate_expedited_exchange_reimbursements
91
+ return unless Spree::Config[:expedited_exchanges]
94
92
 
95
- return if items_to_exchange.blank?
93
+ items_to_exchange = return_items.select(&:exchange_required?)
94
+ items_to_exchange.each(&:attempt_accept)
95
+ items_to_exchange.select!(&:accepted?)
96
96
 
97
- pre_expedited_exchange_hooks.each { |h| h.call items_to_exchange }
97
+ return if items_to_exchange.blank?
98
98
 
99
- reimbursement = Reimbursement.new(return_items: items_to_exchange, order: order)
99
+ pre_expedited_exchange_hooks.each { |h| h.call items_to_exchange }
100
100
 
101
- if reimbursement.save
102
- reimbursement.perform!
103
- else
104
- errors.add(:base, reimbursement.errors.full_messages)
105
- raise ActiveRecord::RecordInvalid.new(self)
106
- end
101
+ reimbursement = Reimbursement.new(return_items: items_to_exchange, order: order)
107
102
 
103
+ if reimbursement.save
104
+ reimbursement.perform!
105
+ else
106
+ errors.add(:base, reimbursement.errors.full_messages)
107
+ raise ActiveRecord::RecordInvalid.new(self)
108
108
  end
109
+ end
109
110
  end
110
111
  end
@@ -6,15 +6,15 @@ module Spree
6
6
  ReturnItem::EligibilityValidator::TimeSincePurchase,
7
7
  ReturnItem::EligibilityValidator::RMARequired,
8
8
  ReturnItem::EligibilityValidator::InventoryShipped,
9
- ReturnItem::EligibilityValidator::NoReimbursements,
9
+ ReturnItem::EligibilityValidator::NoReimbursements
10
10
  ]
11
11
 
12
12
  def eligible_for_return?
13
- validators.all? {|v| v.eligible_for_return? }
13
+ validators.all?(&:eligible_for_return?)
14
14
  end
15
15
 
16
16
  def requires_manual_intervention?
17
- validators.any? {|v| v.requires_manual_intervention? }
17
+ validators.any?(&:requires_manual_intervention?)
18
18
  end
19
19
 
20
20
  def errors
@@ -24,7 +24,7 @@ module Spree
24
24
  private
25
25
 
26
26
  def validators
27
- @validators ||= permitted_eligibility_validators.map{|v| v.new(@return_item) }
27
+ @validators ||= permitted_eligibility_validators.map{ |v| v.new(@return_item) }
28
28
  end
29
29
  end
30
30
  end
@@ -14,4 +14,3 @@ module Spree
14
14
  end
15
15
  end
16
16
  end
17
-
@@ -1,6 +1,5 @@
1
1
  module Spree
2
2
  class ReturnItem < Spree::Base
3
-
4
3
  INTERMEDIATE_RECEPTION_STATUSES = %i(given_to_customer lost_in_transit shipped_wrong_item short_shipped in_transit)
5
4
  COMPLETED_RECEPTION_STATUSES = INTERMEDIATE_RECEPTION_STATUSES + [:received]
6
5
 
@@ -49,8 +48,8 @@ module Spree
49
48
  scope :awaiting_return, -> { where(reception_status: 'awaiting') }
50
49
  scope :expecting_return, -> { where.not(reception_status: COMPLETED_RECEPTION_STATUSES) }
51
50
  scope :not_cancelled, -> { where.not(reception_status: 'cancelled') }
52
- scope :valid, -> { where.not(reception_status: %w(cancelled expired unexchanged))}
53
- scope :not_expired, -> { where.not(reception_status: 'expired')}
51
+ scope :valid, -> { where.not(reception_status: %w(cancelled expired unexchanged)) }
52
+ scope :not_expired, -> { where.not(reception_status: 'expired') }
54
53
  scope :received, -> { where(reception_status: 'received') }
55
54
  INTERMEDIATE_RECEPTION_STATUSES.each do |reception_status|
56
55
  scope reception_status, -> { where(reception_status: reception_status) }
@@ -73,8 +72,8 @@ module Spree
73
72
  delegate :variant, to: :inventory_unit
74
73
  delegate :shipment, to: :inventory_unit
75
74
 
76
- before_create :set_default_pre_tax_amount, unless: :pre_tax_amount_changed?
77
- before_save :set_exchange_pre_tax_amount
75
+ before_create :set_default_amount, unless: :amount_changed?
76
+ before_save :set_exchange_amount
78
77
 
79
78
  state_machine :reception_status, initial: :awaiting do
80
79
  after_transition to: COMPLETED_RECEPTION_STATUSES, do: :attempt_accept
@@ -94,7 +93,7 @@ module Spree
94
93
  end
95
94
 
96
95
  extend DisplayMoney
97
- money_methods :pre_tax_amount, :total
96
+ money_methods :pre_tax_amount, :amount, :total
98
97
 
99
98
  # @return [Boolean] true when this retur item is in a complete reception
100
99
  # state
@@ -134,7 +133,7 @@ module Spree
134
133
  # unit if one exists, or a new one if one does not
135
134
  def self.from_inventory_unit(inventory_unit)
136
135
  valid.find_by(inventory_unit: inventory_unit) ||
137
- new(inventory_unit: inventory_unit).tap(&:set_default_pre_tax_amount)
136
+ new(inventory_unit: inventory_unit).tap(&:set_default_amount)
138
137
  end
139
138
 
140
139
  # @return [Boolean] true when an exchange has been requested on this return
@@ -155,10 +154,14 @@ module Spree
155
154
  exchange_requested? && !exchange_processed?
156
155
  end
157
156
 
158
- # @return [BigDecimal] the cost of the item before tax, plus the included
159
- # and additional taxes
157
+ # @return [BigDecimal] the cost of the item after tax
160
158
  def total
161
- pre_tax_amount + included_tax_total + additional_tax_total
159
+ amount + additional_tax_total
160
+ end
161
+
162
+ # @return [BigDecimal] the cost of the item before tax
163
+ def pre_tax_amount
164
+ amount - included_tax_total
162
165
  end
163
166
 
164
167
  # @note This uses the exchange_variant_engine configured on the class.
@@ -186,12 +189,12 @@ module Spree
186
189
  exchange_inventory_unit.try(:shipment)
187
190
  end
188
191
 
189
- # Calculates and sets the default pre-tax amount to be refunded.
192
+ # Calculates and sets the default amount to be refunded.
190
193
  #
191
194
  # @note This uses the configured refund_amount_calculator configured on the
192
195
  # class.
193
- def set_default_pre_tax_amount
194
- self.pre_tax_amount = refund_amount_calculator.new.compute(self)
196
+ def set_default_amount
197
+ self.amount = refund_amount_calculator.new.compute(self)
195
198
  end
196
199
 
197
200
  def potential_reception_transitions
@@ -216,7 +219,7 @@ module Spree
216
219
  private
217
220
 
218
221
  def persist_acceptance_status_errors
219
- self.update_attributes(acceptance_status_errors: validator.errors)
222
+ update_attributes(acceptance_status_errors: validator.errors)
220
223
  end
221
224
 
222
225
  def currency
@@ -241,7 +244,7 @@ module Spree
241
244
  original_ri = sibling_intended_for_exchange('awaiting')
242
245
  if original_ri
243
246
  original_ri.unexchange!
244
- set_default_pre_tax_amount
247
+ set_default_amount
245
248
  save!
246
249
  end
247
250
  end
@@ -277,20 +280,20 @@ module Spree
277
280
  end
278
281
  end
279
282
 
280
- def set_exchange_pre_tax_amount
281
- self.pre_tax_amount = 0.0.to_d if exchange_requested?
283
+ def set_exchange_amount
284
+ self.amount = 0.0.to_d if exchange_requested?
282
285
  end
283
286
 
284
287
  def validate_no_other_completed_return_items
285
288
  other_return_item = Spree::ReturnItem.where({
286
289
  inventory_unit_id: inventory_unit_id,
287
- reception_status: COMPLETED_RECEPTION_STATUSES,
288
- }).where.not(id: self.id).first
290
+ reception_status: COMPLETED_RECEPTION_STATUSES
291
+ }).where.not(id: id).first
289
292
 
290
293
  if other_return_item && (new_record? || COMPLETED_RECEPTION_STATUSES.include?(reception_status.to_sym))
291
294
  errors.add(:inventory_unit, :other_completed_return_item_exists, {
292
295
  inventory_unit_id: inventory_unit_id,
293
- return_item_id: other_return_item.id,
296
+ return_item_id: other_return_item.id
294
297
  })
295
298
  end
296
299
  end
@@ -299,9 +302,7 @@ module Spree
299
302
  Spree::ReturnItem.where(inventory_unit_id: inventory_unit_id)
300
303
  .where.not(id: id)
301
304
  .valid
302
- .each do |return_item|
303
- return_item.cancel!
304
- end
305
+ .each(&:cancel!)
305
306
  end
306
307
 
307
308
  def should_restock?