spree_core 3.1.14 → 3.2.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 (529) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/{spree.js.coffee.erb → spree.js.coffee} +2 -2
  3. data/app/helpers/spree/base_helper.rb +1 -1
  4. data/app/helpers/spree/products_helper.rb +0 -6
  5. data/app/mailers/spree/reimbursement_mailer.rb +6 -6
  6. data/app/models/concerns/spree/acts_as_taggable.rb +11 -0
  7. data/app/models/concerns/spree/adjustment_source.rb +1 -1
  8. data/app/models/concerns/spree/ransackable_attributes.rb +0 -5
  9. data/app/models/spree/address.rb +67 -38
  10. data/app/models/spree/app_configuration.rb +9 -6
  11. data/app/models/spree/base.rb +1 -1
  12. data/app/models/spree/calculator.rb +1 -1
  13. data/app/models/spree/country.rb +5 -4
  14. data/app/models/spree/credit_card.rb +3 -3
  15. data/app/models/spree/gateway/bogus.rb +11 -11
  16. data/app/models/spree/gateway/bogus_simple.rb +4 -4
  17. data/app/models/spree/gateway.rb +1 -1
  18. data/app/models/spree/image.rb +2 -2
  19. data/app/models/spree/inventory_unit.rb +6 -10
  20. data/app/models/spree/line_item.rb +17 -6
  21. data/app/models/spree/order/checkout.rb +2 -2
  22. data/app/models/spree/order.rb +12 -25
  23. data/app/models/spree/order_contents.rb +7 -6
  24. data/app/models/spree/order_inventory.rb +12 -1
  25. data/app/models/spree/order_updater.rb +1 -2
  26. data/app/models/spree/payment/processing.rb +3 -3
  27. data/app/models/spree/payment_method.rb +7 -1
  28. data/app/models/spree/preferences/store.rb +3 -3
  29. data/app/models/spree/product/scopes.rb +16 -20
  30. data/app/models/spree/product.rb +11 -3
  31. data/app/models/spree/promotion/actions/create_line_items.rb +21 -3
  32. data/app/models/spree/promotion/rules/country.rb +23 -0
  33. data/app/models/spree/promotion/rules/option_value.rb +13 -10
  34. data/app/models/spree/promotion/rules/taxon.rb +1 -1
  35. data/app/models/spree/promotion.rb +35 -1
  36. data/app/models/spree/promotion_handler/cart.rb +3 -17
  37. data/app/models/spree/promotion_handler/coupon.rb +22 -22
  38. data/app/models/spree/promotion_handler/page.rb +2 -2
  39. data/app/models/spree/refund.rb +1 -1
  40. data/app/models/spree/refund_reason.rb +1 -1
  41. data/app/models/spree/reimbursement_type.rb +5 -1
  42. data/app/models/spree/return_item.rb +1 -1
  43. data/app/models/spree/shipment.rb +4 -6
  44. data/app/models/spree/shipment_handler.rb +1 -1
  45. data/app/models/spree/stock/adjuster.rb +9 -2
  46. data/app/models/spree/stock/coordinator.rb +11 -4
  47. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  48. data/app/models/spree/stock/package.rb +11 -3
  49. data/app/models/spree/stock/packer.rb +15 -5
  50. data/app/models/spree/stock/prioritizer.rb +25 -15
  51. data/app/models/spree/stock/splitter/shipping_category.rb +6 -1
  52. data/app/models/spree/stock_item.rb +2 -1
  53. data/app/models/spree/stock_movement.rb +11 -6
  54. data/app/models/spree/store.rb +1 -0
  55. data/app/models/spree/store_credit.rb +1 -1
  56. data/app/models/spree/tag.rb +4 -0
  57. data/app/models/spree/tax_rate.rb +6 -0
  58. data/app/models/spree/taxon.rb +3 -3
  59. data/app/models/spree/variant.rb +6 -3
  60. data/app/models/spree/zone.rb +2 -2
  61. data/app/views/spree/shared/_paths.html.erb +8 -0
  62. data/config/initializers/acts_as_taggable_on.rb +9 -0
  63. data/config/initializers/friendly_id.rb +0 -81
  64. data/config/locales/en.yml +11 -0
  65. data/db/default/spree/countries.rb +5 -1
  66. data/db/default/spree/roles.rb +2 -2
  67. data/db/default/spree/states.rb +1 -1
  68. data/db/migrate/20120831092320_spree_one_two.rb +101 -101
  69. data/db/migrate/20120831092359_spree_promo_one_two.rb +14 -14
  70. data/db/migrate/20120905145253_add_tax_rate_label.rb +1 -1
  71. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +2 -2
  72. data/db/migrate/20120929093553_remove_unused_preference_columns.rb +4 -4
  73. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +2 -2
  74. data/db/migrate/20121010142909_add_states_required_to_countries.rb +2 -2
  75. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +3 -3
  76. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +5 -5
  77. data/db/migrate/20121031162139_split_prices_from_variants.rb +10 -10
  78. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +3 -3
  79. data/db/migrate/20121107184631_add_currency_to_line_items.rb +1 -1
  80. data/db/migrate/20121107194006_add_currency_to_orders.rb +1 -1
  81. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +2 -2
  82. data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +1 -1
  83. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +2 -2
  84. data/db/migrate/20121126040517_add_last_ip_to_spree_orders.rb +1 -1
  85. data/db/migrate/20121213162028_add_state_to_spree_adjustments.rb +1 -1
  86. data/db/migrate/20130114053446_add_display_on_to_spree_payment_methods.rb +1 -1
  87. data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +2 -2
  88. data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +1 -1
  89. data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +1 -1
  90. data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +1 -1
  91. data/db/migrate/20130211190146_create_spree_stock_items.rb +2 -2
  92. data/db/migrate/20130211191120_create_spree_stock_locations.rb +1 -1
  93. data/db/migrate/20130213191427_create_default_stock.rb +1 -2
  94. data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +1 -1
  95. data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +2 -2
  96. data/db/migrate/20130226191231_add_stock_location_id_to_spree_shipments.rb +1 -1
  97. data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +3 -3
  98. data/db/migrate/20130228164411_remove_on_demand_from_product_and_variant.rb +1 -1
  99. data/db/migrate/20130228210442_create_shipping_method_zone.rb +3 -3
  100. data/db/migrate/20130301162745_remove_shipping_category_id_from_shipping_method.rb +1 -1
  101. data/db/migrate/20130301162924_create_shipping_method_categories.rb +3 -3
  102. data/db/migrate/20130301205200_add_tracking_url_to_spree_shipping_methods.rb +1 -1
  103. data/db/migrate/20130304162240_create_spree_shipping_rates.rb +5 -5
  104. data/db/migrate/20130304192936_remove_category_match_attributes_from_shipping_method.rb +1 -1
  105. data/db/migrate/20130305143310_create_stock_movements.rb +1 -1
  106. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +3 -3
  107. data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +2 -2
  108. data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +2 -2
  109. data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +2 -2
  110. data/db/migrate/20130318151756_add_source_and_destination_to_stock_movements.rb +1 -1
  111. data/db/migrate/20130319062004_change_orders_total_precision.rb +5 -5
  112. data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +2 -2
  113. data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +2 -2
  114. data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +2 -2
  115. data/db/migrate/20130319183250_add_originator_to_stock_movement.rb +1 -1
  116. data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +3 -3
  117. data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +3 -3
  118. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
  119. data/db/migrate/20130328130308_update_shipment_state_for_canceled_orders.rb +1 -1
  120. data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +1 -1
  121. data/db/migrate/20130329134939_remove_stock_item_and_variant_lock.rb +1 -1
  122. data/db/migrate/20130413230529_add_name_to_spree_credit_cards.rb +1 -1
  123. data/db/migrate/20130414000512_update_name_fields_on_spree_credit_cards.rb +2 -2
  124. data/db/migrate/20130417120034_add_index_to_source_columns_on_adjustments.rb +1 -1
  125. data/db/migrate/20130417120035_update_adjustment_states.rb +3 -3
  126. data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +4 -4
  127. data/db/migrate/20130418125341_create_spree_stock_transfers.rb +1 -1
  128. data/db/migrate/20130423110707_drop_products_count_on_hand.rb +1 -1
  129. data/db/migrate/20130423223847_set_default_shipping_rate_cost.rb +1 -1
  130. data/db/migrate/20130509115210_add_number_to_stock_transfer.rb +1 -1
  131. data/db/migrate/20130514151929_add_sku_index_to_spree_variants.rb +1 -1
  132. data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +1 -1
  133. data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +1 -1
  134. data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +1 -1
  135. data/db/migrate/20130611185927_add_user_id_index_to_spree_orders.rb +1 -1
  136. data/db/migrate/20130618041418_add_updated_at_to_spree_countries.rb +1 -1
  137. data/db/migrate/20130619012236_add_updated_at_to_spree_states.rb +1 -1
  138. data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +1 -1
  139. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +2 -2
  140. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +4 -4
  141. data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +1 -1
  142. data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +1 -1
  143. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +2 -2
  144. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +3 -3
  145. data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +1 -1
  146. data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +1 -1
  147. data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +1 -1
  148. data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +1 -1
  149. data/db/migrate/20130806022521_drop_spree_mail_methods.rb +1 -1
  150. data/db/migrate/20130806145853_set_default_stock_location_on_shipments.rb +1 -1
  151. data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -4
  152. data/db/migrate/20130807024302_rename_adjustment_fields.rb +1 -1
  153. data/db/migrate/20130809164245_add_admin_name_column_to_spree_shipping_methods.rb +1 -1
  154. data/db/migrate/20130809164330_add_admin_name_column_to_spree_stock_locations.rb +1 -1
  155. data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +2 -2
  156. data/db/migrate/20130813140619_expand_order_number_size.rb +3 -3
  157. data/db/migrate/20130813232134_rename_activators_to_promotions.rb +1 -1
  158. data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +2 -2
  159. data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +2 -2
  160. data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +1 -1
  161. data/db/migrate/20130828234942_add_tax_total_to_line_items_shipments_and_orders.rb +2 -2
  162. data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +2 -2
  163. data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +1 -1
  164. data/db/migrate/20130903183026_add_code_to_spree_promotion_rules.rb +1 -1
  165. data/db/migrate/20130909115621_change_states_required_for_countries.rb +1 -1
  166. data/db/migrate/20130915032339_add_deleted_at_to_spree_stock_items.rb +1 -1
  167. data/db/migrate/20130917024658_remove_promotions_event_name_field.rb +1 -1
  168. data/db/migrate/20130924040529_add_promo_total_to_line_items_and_shipments_and_orders.rb +1 -1
  169. data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +2 -2
  170. data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +2 -2
  171. data/db/migrate/20131107132123_add_tax_category_to_variants.rb +1 -1
  172. data/db/migrate/20131113035136_add_channel_to_spree_orders.rb +1 -1
  173. data/db/migrate/20131118043959_add_included_to_adjustments.rb +2 -2
  174. data/db/migrate/20131118050234_rename_tax_total_fields.rb +1 -1
  175. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +1 -1
  176. data/db/migrate/20131120234456_add_updated_at_to_variants.rb +1 -1
  177. data/db/migrate/20131127001002_add_position_to_classifications.rb +1 -1
  178. data/db/migrate/20131211112807_create_spree_orders_promotions.rb +2 -2
  179. data/db/migrate/20131211192741_unique_shipping_method_categories.rb +1 -1
  180. data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +2 -2
  181. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +1 -1
  182. data/db/migrate/20140106224208_rename_permalink_to_slug_for_products.rb +1 -1
  183. data/db/migrate/20140120160805_add_index_to_variant_id_and_currency_on_prices.rb +1 -1
  184. data/db/migrate/20140124023232_rename_activator_id_in_rules_and_actions_to_promotion_id.rb +1 -1
  185. data/db/migrate/20140129024326_add_deleted_at_to_spree_prices.rb +1 -1
  186. data/db/migrate/20140203161722_add_approver_id_and_approved_at_to_orders.rb +1 -1
  187. data/db/migrate/20140204115338_add_confirmation_delivered_to_spree_orders.rb +1 -1
  188. data/db/migrate/20140204192230_add_auto_capture_to_payment_methods.rb +1 -1
  189. data/db/migrate/20140205120320_create_spree_payment_capture_events.rb +1 -1
  190. data/db/migrate/20140205144710_add_uncaptured_amount_to_payments.rb +1 -1
  191. data/db/migrate/20140205181631_default_variant_weight_to_zero.rb +1 -1
  192. data/db/migrate/20140207085910_add_tax_category_id_to_shipping_methods.rb +1 -1
  193. data/db/migrate/20140207093021_add_tax_rate_id_to_shipping_rates.rb +1 -1
  194. data/db/migrate/20140211040159_add_pre_tax_amount_to_line_items_and_shipments.rb +1 -1
  195. data/db/migrate/20140213184916_add_more_indexes.rb +1 -1
  196. data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +2 -2
  197. data/db/migrate/20140227112348_add_preference_store_to_everything.rb +1 -1
  198. data/db/migrate/20140307235515_add_user_id_to_spree_credit_cards.rb +1 -1
  199. data/db/migrate/20140309023735_migrate_old_preferences.rb +1 -1
  200. data/db/migrate/20140309024355_create_spree_stores.rb +2 -2
  201. data/db/migrate/20140309033438_create_store_from_preferences.rb +2 -2
  202. data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +1 -1
  203. data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +1 -1
  204. data/db/migrate/20140331100557_add_additional_store_fields.rb +1 -1
  205. data/db/migrate/20140410141842_add_many_missing_indexes.rb +1 -1
  206. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +1 -1
  207. data/db/migrate/20140415041315_add_user_id_created_by_id_index_to_order.rb +1 -1
  208. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +5 -5
  209. data/db/migrate/20140518174634_add_token_to_spree_orders.rb +1 -1
  210. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +2 -2
  211. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +1 -1
  212. data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +1 -1
  213. data/db/migrate/20140609201656_add_deleted_at_to_spree_promotion_actions.rb +1 -1
  214. data/db/migrate/20140616202624_remove_uncaptured_amount_from_spree_payments.rb +1 -1
  215. data/db/migrate/20140625214618_create_spree_refunds.rb +1 -1
  216. data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +1 -1
  217. data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +1 -1
  218. data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +1 -1
  219. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +2 -2
  220. data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +1 -1
  221. data/db/migrate/20140710190048_drop_return_authorization_amount.rb +1 -1
  222. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +1 -1
  223. data/db/migrate/20140713140527_create_spree_refund_reasons.rb +1 -1
  224. data/db/migrate/20140713142214_rename_return_authorization_reason.rb +1 -1
  225. data/db/migrate/20140715182625_create_spree_promotion_categories.rb +1 -1
  226. data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +1 -1
  227. data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +1 -1
  228. data/db/migrate/20140717155155_create_default_refund_reason.rb +1 -1
  229. data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +1 -1
  230. data/db/migrate/20140718133010_create_spree_customer_returns.rb +1 -1
  231. data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +1 -1
  232. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +5 -5
  233. data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +1 -1
  234. data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +1 -1
  235. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +2 -2
  236. data/db/migrate/20140725131539_create_spree_reimbursements.rb +1 -1
  237. data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +1 -1
  238. data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +1 -1
  239. data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +1 -1
  240. data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +1 -1
  241. data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +1 -1
  242. data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +1 -1
  243. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +1 -1
  244. data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +1 -1
  245. data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +1 -1
  246. data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +1 -1
  247. data/db/migrate/20140911173301_add_kind_to_zone.rb +1 -1
  248. data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +1 -1
  249. data/db/migrate/20140927193717_default_pre_tax_amount_should_be_zero.rb +1 -1
  250. data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +1 -1
  251. data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +1 -1
  252. data/db/migrate/20141009204607_add_store_id_to_orders.rb +1 -1
  253. data/db/migrate/20141012083513_create_spree_taxons_prototypes.rb +1 -1
  254. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +1 -1
  255. data/db/migrate/20141023005240_add_counter_cache_from_spree_variants_to_spree_stock_items.rb +2 -7
  256. data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +1 -1
  257. data/db/migrate/20141105213646_update_classifications_positions.rb +1 -1
  258. data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +1 -1
  259. data/db/migrate/20141215232040_remove_token_permissions_table.rb +1 -1
  260. data/db/migrate/20141215235502_remove_extra_products_slug_index.rb +1 -1
  261. data/db/migrate/20141217215630_update_product_slug_index.rb +1 -1
  262. data/db/migrate/20141218025915_rename_identifier_to_number_for_payment.rb +1 -1
  263. data/db/migrate/20150118210639_create_spree_store_credits.rb +1 -1
  264. data/db/migrate/20150118211500_create_spree_store_credit_categories.rb +1 -1
  265. data/db/migrate/20150118212051_create_spree_store_credit_events.rb +1 -1
  266. data/db/migrate/20150118212101_create_spree_store_credit_types.rb +1 -1
  267. data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +1 -1
  268. data/db/migrate/20150122145607_add_resellable_to_return_items.rb +1 -1
  269. data/db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb +1 -1
  270. data/db/migrate/20150128032538_remove_environment_from_tracker.rb +1 -1
  271. data/db/migrate/20150128060325_remove_spree_configurations.rb +1 -1
  272. data/db/migrate/20150216173445_add_index_to_spree_stock_items_variant_id.rb +1 -1
  273. data/db/migrate/20150309161154_ensure_payments_have_numbers.rb +1 -1
  274. data/db/migrate/20150314013438_add_missing_indexes_on_spree_tables.rb +1 -1
  275. data/db/migrate/20150317174308_remove_duplicated_indexes_from_multi_columns.rb +1 -1
  276. data/db/migrate/20150324104002_remove_user_index_from_spree_state_changes.rb +1 -1
  277. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +1 -1
  278. data/db/migrate/20150522071831_add_position_to_spree_payment_methods.rb +1 -1
  279. data/db/migrate/20150522181728_add_deleted_at_to_friendly_id_slugs.rb +1 -1
  280. data/db/migrate/20150609093816_increase_scale_on_pre_tax_amounts.rb +1 -1
  281. data/db/migrate/20150626181949_add_taxable_adjustment_total_to_line_item.rb +1 -1
  282. data/db/migrate/20150627090949_migrate_payment_methods_display.rb +1 -1
  283. data/db/migrate/20150707204155_enable_acts_as_paranoid_on_calculators.rb +1 -1
  284. data/db/migrate/20150714154102_spree_payment_method_store_credits.rb +1 -1
  285. data/db/migrate/20150726141425_rename_has_and_belongs_to_associations_to_model_names.rb +1 -1
  286. data/db/migrate/20150727191614_spree_store_credit_types.rb +1 -1
  287. data/db/migrate/20150819154308_add_discontinued_to_products_and_variants.rb +1 -1
  288. data/db/migrate/20151220072838_remove_shipping_method_id_from_spree_orders.rb +1 -1
  289. data/db/migrate/20160207191757_add_id_column_to_earlier_habtm_tables.rb +1 -1
  290. data/db/migrate/20160219165458_add_indexes.rb +1 -1
  291. data/db/migrate/20160509064646_remove_counter_cache_from_spree_variants_to_spree_stock_items.rb +10 -0
  292. data/db/migrate/20160511071954_acts_as_taggable_on_spree_migration.rb +40 -0
  293. data/db/migrate/20160511072249_change_collation_for_spree_tag_names.rb +9 -0
  294. data/db/migrate/20160511072335_add_missing_indexes_to_spree_taggings.rb +14 -0
  295. data/db/migrate/20160608090604_add_zipcode_required_to_spree_countries.rb +7 -0
  296. data/db/migrate/20161014145148_add_created_at_to_variant.rb +8 -0
  297. data/db/migrate/20161014152814_add_null_false_to_spree_variants_timestamps.rb +6 -0
  298. data/lib/generators/spree/custom_user/custom_user_generator.rb +1 -1
  299. data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +3 -3
  300. data/lib/generators/spree/custom_user/templates/migration.rb.tt +2 -2
  301. data/lib/generators/spree/dummy/dummy_generator.rb +11 -11
  302. data/lib/generators/spree/dummy/templates/rails/application.rb +1 -1
  303. data/lib/generators/spree/dummy/templates/rails/database.yml +9 -6
  304. data/lib/generators/spree/dummy/templates/rails/test.rb +2 -2
  305. data/lib/generators/spree/install/install_generator.rb +37 -13
  306. data/lib/spree/core/controller_helpers/common.rb +3 -3
  307. data/lib/spree/core/controller_helpers/order.rb +2 -5
  308. data/lib/spree/core/controller_helpers/respond_with.rb +1 -1
  309. data/lib/spree/core/delegate_belongs_to.rb +2 -2
  310. data/lib/spree/core/engine.rb +5 -4
  311. data/lib/spree/core/importer/product.rb +2 -2
  312. data/lib/spree/core/product_duplicator.rb +1 -1
  313. data/lib/spree/core/product_filters.rb +1 -1
  314. data/lib/spree/core/search/base.rb +1 -1
  315. data/lib/spree/core/version.rb +1 -1
  316. data/lib/spree/i18n/initializer.rb +1 -1
  317. data/lib/spree/money.rb +1 -15
  318. data/lib/spree/permitted_attributes.rb +1 -1
  319. data/lib/spree/testing_support/caching.rb +3 -3
  320. data/lib/spree/testing_support/common_rake.rb +0 -2
  321. data/lib/spree/testing_support/controller_requests.rb +4 -4
  322. data/lib/spree/testing_support/factories/line_item_factory.rb +0 -1
  323. data/lib/spree/testing_support/factories/order_factory.rb +1 -0
  324. data/lib/spree/testing_support/factories/tag_factory.rb +5 -0
  325. data/lib/spree/testing_support/kernel.rb +18 -0
  326. data/lib/spree/testing_support/order_walkthrough.rb +4 -4
  327. data/lib/tasks/core.rake +2 -2
  328. data/spec/helpers/base_helper_spec.rb +200 -0
  329. data/spec/helpers/products_helper_spec.rb +289 -0
  330. data/spec/lib/calculated_adjustments_spec.rb +7 -0
  331. data/spec/lib/i18n_spec.rb +123 -0
  332. data/spec/lib/search/base_spec.rb +86 -0
  333. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +103 -0
  334. data/spec/lib/spree/core/controller_helpers/order_spec.rb +110 -0
  335. data/spec/lib/spree/core/controller_helpers/search_spec.rb +17 -0
  336. data/spec/lib/spree/core/controller_helpers/store_spec.rb +72 -0
  337. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +39 -0
  338. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +22 -0
  339. data/spec/lib/spree/core/importer/order_spec.rb +605 -0
  340. data/spec/lib/spree/core/number_generator_spec.rb +175 -0
  341. data/spec/lib/spree/core/token_generator_spec.rb +24 -0
  342. data/spec/lib/spree/core/validators/email_spec.rb +53 -0
  343. data/spec/lib/spree/core_spec.rb +23 -0
  344. data/spec/lib/spree/localized_number_spec.rb +48 -0
  345. data/spec/lib/spree/migrations_spec.rb +36 -0
  346. data/spec/lib/spree/money_spec.rb +122 -0
  347. data/spec/lib/tasks/exchanges_spec.rb +136 -0
  348. data/spec/mailers/order_mailer_spec.rb +122 -0
  349. data/spec/mailers/reimbursement_mailer_spec.rb +47 -0
  350. data/spec/mailers/shipment_mailer_spec.rb +81 -0
  351. data/spec/mailers/test_mailer_spec.rb +38 -0
  352. data/spec/models/option_type_prototype_spec.rb +9 -0
  353. data/spec/models/spree/ability_spec.rb +251 -0
  354. data/spec/models/spree/address_spec.rb +402 -0
  355. data/spec/models/spree/adjustable/adjuster/base_spec.rb +10 -0
  356. data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +211 -0
  357. data/spec/models/spree/adjustable/adjuster/tax_spec.rb +86 -0
  358. data/spec/models/spree/adjustable/adjustments_updater_spec.rb +26 -0
  359. data/spec/models/spree/adjustment_spec.rb +189 -0
  360. data/spec/models/spree/app_configuration_spec.rb +26 -0
  361. data/spec/models/spree/asset_spec.rb +28 -0
  362. data/spec/models/spree/calculator/default_tax_spec.rb +152 -0
  363. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +25 -0
  364. data/spec/models/spree/calculator/flat_rate_spec.rb +47 -0
  365. data/spec/models/spree/calculator/flexi_rate_spec.rb +41 -0
  366. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +15 -0
  367. data/spec/models/spree/calculator/price_sack_spec.rb +30 -0
  368. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +47 -0
  369. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +23 -0
  370. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +13 -0
  371. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +52 -0
  372. data/spec/models/spree/calculator/shipping/per_item_spec.rb +20 -0
  373. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +29 -0
  374. data/spec/models/spree/calculator/shipping.rb +8 -0
  375. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +40 -0
  376. data/spec/models/spree/calculator/tiered_percent_spec.rb +51 -0
  377. data/spec/models/spree/calculator_spec.rb +69 -0
  378. data/spec/models/spree/classification_spec.rb +93 -0
  379. data/spec/models/spree/concerns/display_money_spec.rb +43 -0
  380. data/spec/models/spree/concerns/user_methods_spec.rb +82 -0
  381. data/spec/models/spree/concerns/vat_price_calculation_spec.rb +66 -0
  382. data/spec/models/spree/country_spec.rb +55 -0
  383. data/spec/models/spree/credit_card_spec.rb +328 -0
  384. data/spec/models/spree/customer_return_spec.rb +240 -0
  385. data/spec/models/spree/exchange_spec.rb +75 -0
  386. data/spec/models/spree/gateway/bogus_simple.rb +20 -0
  387. data/spec/models/spree/gateway/bogus_spec.rb +13 -0
  388. data/spec/models/spree/gateway_spec.rb +61 -0
  389. data/spec/models/spree/image_spec.rb +8 -0
  390. data/spec/models/spree/inventory_unit_spec.rb +256 -0
  391. data/spec/models/spree/line_item_spec.rb +346 -0
  392. data/spec/models/spree/option_type_spec.rb +14 -0
  393. data/spec/models/spree/option_value_spec.rb +18 -0
  394. data/spec/models/spree/order/address_spec.rb +50 -0
  395. data/spec/models/spree/order/adjustments_spec.rb +29 -0
  396. data/spec/models/spree/order/callbacks_spec.rb +42 -0
  397. data/spec/models/spree/order/checkout_spec.rb +770 -0
  398. data/spec/models/spree/order/currency_updater_spec.rb +32 -0
  399. data/spec/models/spree/order/finalizing_spec.rb +114 -0
  400. data/spec/models/spree/order/helpers_spec.rb +5 -0
  401. data/spec/models/spree/order/payment_spec.rb +214 -0
  402. data/spec/models/spree/order/risk_assessment_spec.rb +84 -0
  403. data/spec/models/spree/order/shipments_spec.rb +43 -0
  404. data/spec/models/spree/order/state_machine_spec.rb +212 -0
  405. data/spec/models/spree/order/store_credit_spec.rb +426 -0
  406. data/spec/models/spree/order/tax_spec.rb +84 -0
  407. data/spec/models/spree/order/totals_spec.rb +24 -0
  408. data/spec/models/spree/order/updating_spec.rb +18 -0
  409. data/spec/models/spree/order/validations_spec.rb +15 -0
  410. data/spec/models/spree/order_contents_spec.rb +297 -0
  411. data/spec/models/spree/order_inventory_spec.rb +239 -0
  412. data/spec/models/spree/order_merger_spec.rb +135 -0
  413. data/spec/models/spree/order_spec.rb +1046 -0
  414. data/spec/models/spree/order_updater_spec.rb +294 -0
  415. data/spec/models/spree/payment/gateway_options_spec.rb +127 -0
  416. data/spec/models/spree/payment/store_credit_spec.rb +60 -0
  417. data/spec/models/spree/payment_method/store_credit_spec.rb +291 -0
  418. data/spec/models/spree/payment_method_spec.rb +103 -0
  419. data/spec/models/spree/payment_spec.rb +919 -0
  420. data/spec/models/spree/preference_spec.rb +80 -0
  421. data/spec/models/spree/preferences/configuration_spec.rb +30 -0
  422. data/spec/models/spree/preferences/preferable_spec.rb +344 -0
  423. data/spec/models/spree/preferences/scoped_store_spec.rb +58 -0
  424. data/spec/models/spree/preferences/store_spec.rb +46 -0
  425. data/spec/models/spree/price_spec.rb +128 -0
  426. data/spec/models/spree/product/scopes_spec.rb +183 -0
  427. data/spec/models/spree/product_duplicator_spec.rb +103 -0
  428. data/spec/models/spree/product_filter_spec.rb +26 -0
  429. data/spec/models/spree/product_option_type_spec.rb +9 -0
  430. data/spec/models/spree/product_promotion_rule_spec.rb +9 -0
  431. data/spec/models/spree/product_property_spec.rb +22 -0
  432. data/spec/models/spree/product_spec.rb +619 -0
  433. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +50 -0
  434. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +148 -0
  435. data/spec/models/spree/promotion/actions/create_line_items_spec.rb +86 -0
  436. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +36 -0
  437. data/spec/models/spree/promotion/rules/country_spec.rb +36 -0
  438. data/spec/models/spree/promotion/rules/first_order_spec.rb +75 -0
  439. data/spec/models/spree/promotion/rules/item_total_spec.rb +282 -0
  440. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +42 -0
  441. data/spec/models/spree/promotion/rules/option_value_spec.rb +90 -0
  442. data/spec/models/spree/promotion/rules/product_spec.rb +143 -0
  443. data/spec/models/spree/promotion/rules/taxon_spec.rb +102 -0
  444. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +27 -0
  445. data/spec/models/spree/promotion/rules/user_spec.rb +45 -0
  446. data/spec/models/spree/promotion_action_spec.rb +10 -0
  447. data/spec/models/spree/promotion_category_spec.rb +17 -0
  448. data/spec/models/spree/promotion_handler/cart_spec.rb +102 -0
  449. data/spec/models/spree/promotion_handler/coupon_spec.rb +323 -0
  450. data/spec/models/spree/promotion_handler/free_shipping_spec.rb +48 -0
  451. data/spec/models/spree/promotion_handler/page_spec.rb +44 -0
  452. data/spec/models/spree/promotion_rule_spec.rb +29 -0
  453. data/spec/models/spree/promotion_rule_taxon_spec.rb +9 -0
  454. data/spec/models/spree/promotion_rule_user_spec.rb +9 -0
  455. data/spec/models/spree/promotion_spec.rb +679 -0
  456. data/spec/models/spree/property_prototype_spec.rb +9 -0
  457. data/spec/models/spree/property_spec.rb +5 -0
  458. data/spec/models/spree/prototype_spec.rb +5 -0
  459. data/spec/models/spree/prototype_taxon_spec.rb +9 -0
  460. data/spec/models/spree/refund_reason_spec.rb +20 -0
  461. data/spec/models/spree/refund_spec.rb +195 -0
  462. data/spec/models/spree/reimbursement/credit_spec.rb +36 -0
  463. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +140 -0
  464. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +83 -0
  465. data/spec/models/spree/reimbursement_performer_spec.rb +30 -0
  466. data/spec/models/spree/reimbursement_spec.rb +188 -0
  467. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +63 -0
  468. data/spec/models/spree/reimbursement_type/credit_spec.rb +53 -0
  469. data/spec/models/spree/reimbursement_type/exchange_spec.rb +46 -0
  470. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +55 -0
  471. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +101 -0
  472. data/spec/models/spree/return_authorization_reason_spec.rb +7 -0
  473. data/spec/models/spree/return_authorization_spec.rb +230 -0
  474. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +77 -0
  475. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +58 -0
  476. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +61 -0
  477. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +32 -0
  478. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +29 -0
  479. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +35 -0
  480. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +65 -0
  481. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +43 -0
  482. data/spec/models/spree/return_item_spec.rb +731 -0
  483. data/spec/models/spree/returns_calculator_spec.rb +14 -0
  484. data/spec/models/spree/role_spec.rb +7 -0
  485. data/spec/models/spree/shipment_spec.rb +742 -0
  486. data/spec/models/spree/shipping_calculator_spec.rb +45 -0
  487. data/spec/models/spree/shipping_category_spec.rb +19 -0
  488. data/spec/models/spree/shipping_method_spec.rb +95 -0
  489. data/spec/models/spree/shipping_rate_spec.rb +140 -0
  490. data/spec/models/spree/state_spec.rb +29 -0
  491. data/spec/models/spree/stock/availability_validator_spec.rb +36 -0
  492. data/spec/models/spree/stock/content_item_spec.rb +31 -0
  493. data/spec/models/spree/stock/coordinator_spec.rb +61 -0
  494. data/spec/models/spree/stock/differentiator_spec.rb +39 -0
  495. data/spec/models/spree/stock/estimator_spec.rb +202 -0
  496. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +38 -0
  497. data/spec/models/spree/stock/package_spec.rb +182 -0
  498. data/spec/models/spree/stock/packer_spec.rb +70 -0
  499. data/spec/models/spree/stock/prioritizer_spec.rb +125 -0
  500. data/spec/models/spree/stock/quantifier_spec.rb +126 -0
  501. data/spec/models/spree/stock/splitter/backordered_spec.rb +29 -0
  502. data/spec/models/spree/stock/splitter/base_spec.rb +21 -0
  503. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +47 -0
  504. data/spec/models/spree/stock/splitter/weight_spec.rb +32 -0
  505. data/spec/models/spree/stock_item_spec.rb +432 -0
  506. data/spec/models/spree/stock_location_spec.rb +243 -0
  507. data/spec/models/spree/stock_movement_spec.rb +120 -0
  508. data/spec/models/spree/stock_transfer_spec.rb +50 -0
  509. data/spec/models/spree/store_credit_event_spec.rb +101 -0
  510. data/spec/models/spree/store_credit_spec.rb +786 -0
  511. data/spec/models/spree/store_spec.rb +78 -0
  512. data/spec/models/spree/tax_category_spec.rb +32 -0
  513. data/spec/models/spree/tax_rate_spec.rb +561 -0
  514. data/spec/models/spree/taxon_spec.rb +85 -0
  515. data/spec/models/spree/taxonomy_spec.rb +18 -0
  516. data/spec/models/spree/tracker_spec.rb +21 -0
  517. data/spec/models/spree/user_spec.rb +203 -0
  518. data/spec/models/spree/variant_spec.rb +809 -0
  519. data/spec/models/spree/zone_member_spec.rb +38 -0
  520. data/spec/models/spree/zone_spec.rb +472 -0
  521. data/spec/spec_helper.rb +79 -0
  522. data/spec/support/big_decimal.rb +5 -0
  523. data/spec/support/concerns/adjustment_source.rb +23 -0
  524. data/spec/support/concerns/default_price.rb +37 -0
  525. data/spec/support/rake.rb +13 -0
  526. data/spec/support/test_gateway.rb +2 -0
  527. data/spree_core.gemspec +12 -12
  528. metadata +249 -43
  529. data/config/initializers/premailer_rails.rb +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b616dbd62252630f0b40acab66132e48cc8b3af
4
- data.tar.gz: b24415aa814427cf8ed1e327f759ac924fd5e78f
3
+ metadata.gz: dc8d21681bc73e110e3d6e705da11f3dc39a53c0
4
+ data.tar.gz: 9de82bfd2ca0d7c423c39cce5eab7efe902dfc58
5
5
  SHA512:
6
- metadata.gz: d83a80bcca05c8fdc4fd312caed0e97f7b8b29e2e2ce008525f03ff21e51cd116f33a6ceb34f4c51692200aa2cbb99f5f5c997df12a07233c891f2260a925db4
7
- data.tar.gz: 18d88ed67e8b08c6f9564f3bfe56ed7bb16a6330a8e75e25951a874f399620fd23860257c6e469055a9090d20b2ef17c1766785dd919a48733fa64dd95ea66f6
6
+ metadata.gz: aef6254d9ac18a5e56f5e4df41f2e024ad5a8d49ad8995781fd44f88a034fb2426e9f8de1c81dfb7dbe8720420b81eb4be3528cccaf084c0cce8bd7d401a3fee
7
+ data.tar.gz: f7136d7ae86448f2a66b85a6b323b3536a9f474489ec8a3d36aac2e892d818b4153a22d0f24147a997aae21157c473dd6fad21e085061c2c8dedc539af15a07a
@@ -8,10 +8,10 @@ class window.Spree
8
8
  callback(jQuery)
9
9
 
10
10
  @mountedAt: ->
11
- "<%= Rails.application.routes.url_helpers.spree_path(trailing_slash: true) %>"
11
+ window.SpreePaths.mounted_at
12
12
 
13
13
  @adminPath: ->
14
- '<%= Spree.admin_path.gsub(/\A(\/)?(.*[^\/])(\/)?\z/, '\\2/') %>'
14
+ window.SpreePaths.admin
15
15
 
16
16
  @pathFor: (path) ->
17
17
  locationOrigin = "#{window.location.protocol}//#{window.location.hostname}" + (if window.location.port then ":#{window.location.port}" else "")
@@ -41,7 +41,7 @@ module Spree
41
41
  object = instance_variable_get('@'+controller_name.singularize)
42
42
  meta = {}
43
43
 
44
- if object.kind_of? ActiveRecord::Base
44
+ if object.kind_of? ApplicationRecord
45
45
  meta[:keywords] = object.meta_keywords if object[:meta_keywords].present?
46
46
  meta[:description] = object.meta_description if object[:meta_description].present?
47
47
  end
@@ -38,12 +38,6 @@ module Spree
38
38
  description.blank? ? Spree.t(:product_has_no_description) : raw(description)
39
39
  end
40
40
 
41
- def line_item_description(variant)
42
- ActiveSupport::Deprecation.warn "line_item_description(variant) is deprecated and may be removed from future releases, use line_item_description_text(line_item.description) instead.", caller
43
-
44
- line_item_description_text(variant.product.description)
45
- end
46
-
47
41
  def line_item_description_text description_text
48
42
  if description_text.present?
49
43
  truncate(strip_tags(description_text.gsub('&nbsp;', ' ').squish), length: 100)
@@ -1,10 +1,10 @@
1
1
  module Spree
2
2
  class ReimbursementMailer < BaseMailer
3
- def reimbursement_email(reimbursement, resend = false)
4
- @reimbursement = reimbursement.respond_to?(:id) ? reimbursement : Spree::Reimbursement.find(reimbursement)
5
- subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
6
- subject += "#{Spree::Store.current.name} #{Spree.t('reimbursement_mailer.reimbursement_email.subject')} ##{@reimbursement.order.number}"
7
- mail(to: @reimbursement.order.email, from: from_address, subject: subject)
8
- end
3
+ def reimbursement_email(reimbursement, resend = false)
4
+ @reimbursement = reimbursement.respond_to?(:id) ? reimbursement : Spree::Reimbursement.find(reimbursement)
5
+ subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
6
+ subject += "#{Spree::Store.current.name} #{Spree.t('reimbursement_mailer.reimbursement_email.subject')} ##{@reimbursement.order.number}"
7
+ mail(to: @reimbursement.order.email, from: from_address, subject: subject)
8
+ end
9
9
  end
10
10
  end
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ module ActsAsTaggable
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ acts_as_taggable
7
+ Spree::PermittedAttributes.send("#{model_name.param_key}_attributes") <<
8
+ [:tag_list]
9
+ end
10
+ end
11
+ end
@@ -9,7 +9,7 @@ module Spree
9
9
 
10
10
  protected
11
11
 
12
- def create_adjustment(order, adjustable, included = false)
12
+ def create_adjustment(order, adjustable, included = nil)
13
13
  amount = compute_amount(adjustable)
14
14
  return if amount == 0
15
15
  adjustments.new(order: order,
@@ -3,7 +3,6 @@ module Spree::RansackableAttributes
3
3
  included do
4
4
  class_attribute :whitelisted_ransackable_associations
5
5
  class_attribute :whitelisted_ransackable_attributes
6
- class_attribute :whitelisted_ransackable_scopes
7
6
 
8
7
  class_attribute :default_ransackable_attributes
9
8
  self.default_ransackable_attributes = %w[id name updated_at created_at]
@@ -15,10 +14,6 @@ module Spree::RansackableAttributes
15
14
  def self.ransackable_attributes(*args)
16
15
  self.default_ransackable_attributes | (self.whitelisted_ransackable_attributes || [])
17
16
  end
18
-
19
- def self.ransackable_scopes(*args)
20
- whitelisted_ransackable_scopes || []
21
- end
22
17
  end
23
18
 
24
19
  end
@@ -2,11 +2,21 @@ module Spree
2
2
  class Address < Spree::Base
3
3
  require 'twitter_cldr'
4
4
 
5
+ NO_ZIPCODE_ISO_CODES ||= [
6
+ 'AO', 'AG', 'AW', 'BS', 'BZ', 'BJ', 'BM', 'BO', 'BW', 'BF', 'BI', 'CM', 'CF', 'KM', 'CG',
7
+ 'CD', 'CK', 'CUW', 'CI', 'DJ', 'DM', 'GQ', 'ER', 'FJ', 'TF', 'GAB', 'GM', 'GH', 'GD', 'GN',
8
+ 'GY', 'HK', 'IE', 'KI', 'KP', 'LY', 'MO', 'MW', 'ML', 'MR', 'NR', 'AN', 'NU', 'KP', 'PA',
9
+ 'QA', 'RW', 'KN', 'LC', 'ST', 'SC', 'SL', 'SB', 'SO', 'SR', 'SY', 'TZ', 'TL', 'TK', 'TG',
10
+ 'TO', 'TV', 'UG', 'AE', 'VU', 'YE', 'ZW'
11
+ ].freeze
12
+
5
13
  belongs_to :country, class_name: "Spree::Country"
6
14
  belongs_to :state, class_name: "Spree::State"
7
15
 
8
16
  has_many :shipments, inverse_of: :address
9
17
 
18
+ before_validation :clear_invalid_state_entities, if: -> { country.present? }, on: :update
19
+
10
20
  with_options presence: true do
11
21
  validates :firstname, :lastname, :address1, :city, :country
12
22
  validates :zipcode, if: :require_zipcode?
@@ -93,53 +103,72 @@ module Spree
93
103
  end
94
104
 
95
105
  def require_zipcode?
96
- true
106
+ country ? country.zipcode_required? : true
97
107
  end
98
108
 
99
109
  private
100
- def state_validate
101
- # Skip state validation without country (also required)
102
- # or when disabled by preference
103
- return if country.blank? || !Spree::Config[:address_requires_state]
104
- return unless country.states_required
105
-
106
- # ensure associated state belongs to country
107
- if state.present?
108
- if state.country == country
109
- self.state_name = nil #not required as we have a valid state and country combo
110
- else
111
- if state_name.present?
112
- self.state = nil
113
- else
114
- errors.add(:state, :invalid)
115
- end
116
- end
110
+
111
+ def clear_state_entities
112
+ clear_state
113
+ clear_state_name
114
+ end
115
+
116
+ def clear_state
117
+ self.state = nil
118
+ end
119
+
120
+ def clear_state_name
121
+ self.state_name = nil
122
+ end
123
+
124
+ def clear_invalid_state_entities
125
+ if state.present? && (state.country != country)
126
+ clear_state
127
+ elsif state_name.present? && !country.states_required? && country.states.empty?
128
+ clear_state_name
129
+ end
130
+ end
131
+
132
+ def state_validate
133
+ # Skip state validation without country (also required)
134
+ # or when disabled by preference
135
+ return if country.blank? || !Spree::Config[:address_requires_state]
136
+ return unless country.states_required
137
+ # ensure associated state belongs to country
138
+ if state.present?
139
+ if state.country == country
140
+ clear_state_name # not required as we have a valid state and country combo
141
+ elsif state_name.present?
142
+ clear_state
143
+ else
144
+ errors.add(:state, :invalid)
117
145
  end
146
+ end
147
+
148
+ # ensure state_name belongs to country without states, or that it matches a predefined state name/abbr
149
+ if state_name.present?
150
+ if country.states.present?
151
+ states = country.states.find_all_by_name_or_abbr(state_name)
118
152
 
119
- # ensure state_name belongs to country without states, or that it matches a predefined state name/abbr
120
- if state_name.present?
121
- if country.states.present?
122
- states = country.states.find_all_by_name_or_abbr(state_name)
123
-
124
- if states.size == 1
125
- self.state = states.first
126
- self.state_name = nil
127
- else
128
- errors.add(:state, :invalid)
129
- end
153
+ if states.size == 1
154
+ self.state = states.first
155
+ clear_state_name
156
+ else
157
+ errors.add(:state, :invalid)
130
158
  end
131
159
  end
132
-
133
- # ensure at least one state field is populated
134
- errors.add :state, :blank if state.blank? && state_name.blank?
135
160
  end
136
161
 
137
- def postal_code_validate
138
- return if country.blank? || country.iso.blank? || !require_zipcode?
139
- return if !TwitterCldr::Shared::PostalCodes.territories.include?(country.iso.downcase.to_sym)
162
+ # ensure at least one state field is populated
163
+ errors.add :state, :blank if state.blank? && state_name.blank?
164
+ end
140
165
 
141
- postal_code = TwitterCldr::Shared::PostalCodes.for_territory(country.iso)
142
- errors.add(:zipcode, :invalid) if !postal_code.valid?(zipcode.to_s.strip)
143
- end
166
+ def postal_code_validate
167
+ return if country.blank? || country.iso.blank? || !require_zipcode?
168
+ return if !TwitterCldr::Shared::PostalCodes.territories.include?(country.iso.downcase.to_sym)
169
+
170
+ postal_code = TwitterCldr::Shared::PostalCodes.for_territory(country.iso)
171
+ errors.add(:zipcode, :invalid) if !postal_code.valid?(zipcode.to_s.strip)
172
+ end
144
173
  end
145
174
  end
@@ -21,14 +21,21 @@ module Spree
21
21
  class AppConfiguration < Preferences::Configuration
22
22
  # Alphabetized to more easily lookup particular preferences
23
23
  preference :address_requires_state, :boolean, default: true # should state/state_name be required
24
- preference :admin_interface_logo, :string, default: 'logo/spree_50.png'
24
+ preference :admin_interface_logo, :string, default: 'admin/logo.png'
25
25
  preference :admin_path, :string, default: '/admin'
26
- preference :admin_products_per_page, :integer, default: 10
26
+ preference :admin_products_per_page, :integer, default: Kaminari.config.default_per_page
27
+ preference :admin_orders_per_page, :integer, default: Kaminari.config.default_per_page
28
+ preference :admin_properties_per_page, :integer, default: Kaminari.config.default_per_page
29
+ preference :admin_promotions_per_page, :integer, default: Kaminari.config.default_per_page
30
+ preference :admin_customer_returns_per_page, :integer, default: Kaminari.config.default_per_page
31
+ preference :admin_users_per_page, :integer, default: Kaminari.config.default_per_page
32
+ preference :admin_show_version, :boolean, default: true
27
33
  preference :allow_checkout_on_gateway_error, :boolean, default: false
28
34
  preference :allow_guest_checkout, :boolean, default: true
29
35
  preference :alternative_shipping_phone, :boolean, default: false # Request extra phone for ship addr
30
36
  preference :always_include_confirm_step, :boolean, default: false # Ensures confirmation step is always in checkout_progress bar, but does not force a confirm step if your payment methods do not support it.
31
37
  preference :always_put_site_name_in_title, :boolean, default: true
38
+ preference :title_site_name_separator, :string, default: '-' # When always_put_site_name_in_title is true, insert a separator character before the site name in the title
32
39
  preference :auto_capture, :boolean, default: false # automatically capture the credit card (as opposed to just authorize and capture later)
33
40
  preference :auto_capture_on_dispatch, :boolean, default: false # Captures payment for each shipment in Shipment#after_ship callback, and makes Shipment.ready when payment authorized.
34
41
  preference :binary_inventory_cache, :boolean, default: false # only invalidate product cache when a stock item changes whether it is in_stock
@@ -41,11 +48,7 @@ module Spree
41
48
  preference :layout, :string, default: 'spree/layouts/spree_application'
42
49
  preference :logo, :string, default: 'logo/spree_50.png'
43
50
  preference :max_level_in_taxons_menu, :integer, default: 1 # maximum nesting level in taxons menu
44
- preference :orders_per_page, :integer, default: 15
45
- preference :properties_per_page, :integer, default: 15
46
51
  preference :products_per_page, :integer, default: 12
47
- preference :promotions_per_page, :integer, default: 15
48
- preference :customer_returns_per_page, :integer, default: 15
49
52
  preference :require_master_price, :boolean, default: true
50
53
  preference :restock_inventory, :boolean, default: true # Determines if a return item is restocked automatically once it has been received
51
54
  preference :return_eligibility_number_of_days, :integer, default: 365
@@ -1,4 +1,4 @@
1
- class Spree::Base < ActiveRecord::Base
1
+ class Spree::Base < ApplicationRecord
2
2
  include Spree::Preferences::Preferable
3
3
  serialize :preferences, Hash
4
4
 
@@ -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 ActiveRecord::Base.connected? && connection.table_exists?(:spree_calculators) && connection.column_exists?(:spree_calculators, :deleted_at)
4
+ if connection.data_source_exists?(:spree_calculators) && connection.column_exists?(:spree_calculators, :deleted_at)
5
5
  acts_as_paranoid
6
6
  end
7
7
 
@@ -1,8 +1,11 @@
1
1
  module Spree
2
2
  class Country < Spree::Base
3
+ # we need to have this callback before any dependent: :destroy associations
4
+ # https://github.com/rails/rails/issues/3458
5
+ before_destroy :ensure_not_default
6
+
3
7
  has_many :states, dependent: :destroy
4
8
  has_many :addresses, dependent: :restrict_with_error
5
-
6
9
  has_many :zone_members,
7
10
  -> { where(zoneable_type: 'Spree::Country') },
8
11
  class_name: 'Spree::ZoneMember',
@@ -11,8 +14,6 @@ module Spree
11
14
 
12
15
  has_many :zones, through: :zone_members, class_name: 'Spree::Zone'
13
16
 
14
- before_destroy :ensure_not_default
15
-
16
17
  validates :name, :iso_name, presence: true, uniqueness: { case_sensitive: false, allow_blank: true }
17
18
 
18
19
  def self.default
@@ -33,7 +34,7 @@ module Spree
33
34
  def ensure_not_default
34
35
  if id.eql?(Spree::Config[:default_country_id])
35
36
  errors.add(:base, Spree.t(:default_country_cannot_be_deleted))
36
- false
37
+ throw(:abort)
37
38
  end
38
39
  end
39
40
  end
@@ -9,8 +9,8 @@ module Spree
9
9
  after_save :ensure_one_default
10
10
 
11
11
  # As of rails 4.2 string columns always return strings, we can override it on model level.
12
- attribute :month, Type::Integer.new
13
- attribute :year, Type::Integer.new
12
+ attribute :month, ActiveRecord::Type::Integer.new
13
+ attribute :year, ActiveRecord::Type::Integer.new
14
14
 
15
15
  attr_reader :number
16
16
  attr_accessor :encrypted_data,
@@ -23,7 +23,7 @@ module Spree
23
23
  validates :name, presence: true
24
24
  end
25
25
 
26
- scope :with_payment_profile, -> { where('gateway_customer_profile_id IS NOT NULL') }
26
+ scope :with_payment_profile, -> { where.not(gateway_customer_profile_id: nil) }
27
27
  scope :default, -> { where(default: true) }
28
28
 
29
29
  # needed for some of the ActiveMerchant gateways (eg. SagePay)
@@ -21,43 +21,43 @@ module Spree
21
21
  return if payment.source.has_payment_profile?
22
22
  # simulate the storage of credit card profile using remote service
23
23
  if success = VALID_CCS.include?(payment.source.number)
24
- payment.source.update_attributes(:gateway_customer_profile_id => generate_profile_id(success))
24
+ payment.source.update_attributes(gateway_customer_profile_id: generate_profile_id(success))
25
25
  end
26
26
  end
27
27
 
28
28
  def authorize(money, credit_card, options = {})
29
29
  profile_id = credit_card.gateway_customer_profile_id
30
30
  if VALID_CCS.include? credit_card.number or (profile_id and profile_id.starts_with? 'BGS-')
31
- ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true, :authorization => '12345', :avs_result => { :code => 'D' })
31
+ ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345', avs_result: { code: 'D' })
32
32
  else
33
- ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', { :message => 'Bogus Gateway: Forced failure' }, :test => true)
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
37
  def purchase(money, credit_card, options = {})
38
38
  profile_id = credit_card.gateway_customer_profile_id
39
39
  if VALID_CCS.include? credit_card.number or (profile_id and profile_id.starts_with? 'BGS-')
40
- ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true, :authorization => '12345', :avs_result => { :code => 'M' })
40
+ ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345', avs_result: { code: 'M' })
41
41
  else
42
- ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', :message => 'Bogus Gateway: Forced failure', :test => true)
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
46
  def credit(money, credit_card, response_code, options = {})
47
- ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true, :authorization => '12345')
47
+ ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345')
48
48
  end
49
49
 
50
50
  def capture(money, authorization, gateway_options)
51
51
  if authorization == '12345'
52
- ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true)
52
+ ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true)
53
53
  else
54
- ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', :error => 'Bogus Gateway: Forced failure', :test => true)
54
+ ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', error: 'Bogus Gateway: Forced failure', test: true)
55
55
  end
56
56
 
57
57
  end
58
58
 
59
59
  def void(response_code, credit_card, options = {})
60
- ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true, :authorization => '12345')
60
+ ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345')
61
61
  end
62
62
 
63
63
  def cancel(_response_code)
@@ -82,8 +82,8 @@ module Spree
82
82
  record = true
83
83
  prefix = success ? 'BGS' : 'FAIL'
84
84
  while record
85
- random = "#{prefix}-#{Array.new(6){rand(6)}.join}"
86
- record = CreditCard.where(:gateway_customer_profile_id => random).first
85
+ random = "#{ prefix }-#{ Array.new(6) { rand(6) }.join }"
86
+ record = CreditCard.find_by(gateway_customer_profile_id: random)
87
87
  end
88
88
  random
89
89
  end
@@ -8,17 +8,17 @@ module Spree
8
8
 
9
9
  def authorize(money, credit_card, options = {})
10
10
  if VALID_CCS.include? credit_card.number
11
- ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true, :authorization => '12345', :avs_result => { :code => 'A' })
11
+ ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345', avs_result: { code: 'A' })
12
12
  else
13
- ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', { :message => 'Bogus Gateway: Forced failure' }, :test => true)
13
+ ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', { message: 'Bogus Gateway: Forced failure' }, test: true)
14
14
  end
15
15
  end
16
16
 
17
17
  def purchase(money, credit_card, options = {})
18
18
  if VALID_CCS.include? credit_card.number
19
- ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true, :authorization => '12345', :avs_result => { :code => 'A' })
19
+ ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345', avs_result: { code: 'A' })
20
20
  else
21
- ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', :message => 'Bogus Gateway: Forced failure', :test => true)
21
+ ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', message: 'Bogus Gateway: Forced failure', test: true)
22
22
  end
23
23
  end
24
24
 
@@ -17,7 +17,7 @@ module Spree
17
17
  gateway_options = options
18
18
  gateway_options.delete :login if gateway_options.has_key?(:login) and gateway_options[:login].nil?
19
19
  if gateway_options[:server]
20
- ActiveMerchant::Billing::Base.gateway_mode = gateway_options[:server].to_sym
20
+ ActiveMerchant::Billing::Base.mode = gateway_options[:server].to_sym
21
21
  end
22
22
  @provider ||= provider_class.new(gateway_options)
23
23
  end
@@ -9,8 +9,8 @@ module Spree
9
9
  path: ':rails_root/public/spree/products/:id/:style/:basename.:extension',
10
10
  convert_options: { all: '-strip -auto-orient -colorspace sRGB' }
11
11
  validates_attachment :attachment,
12
- :presence => true,
13
- :content_type => { :content_type => %w(image/jpeg image/jpg image/png image/gif) }
12
+ presence: true,
13
+ content_type: { content_type: %w(image/jpeg image/jpg image/png image/gif) }
14
14
 
15
15
  # save the w,h of the original image (from which others can be calculated)
16
16
  # we need to look at the write-queue for images which have not been saved yet
@@ -4,7 +4,7 @@ module Spree
4
4
  with_options inverse_of: :inventory_units do
5
5
  belongs_to :variant, class_name: "Spree::Variant"
6
6
  belongs_to :order, class_name: "Spree::Order"
7
- belongs_to :shipment, class_name: "Spree::Shipment", touch: true
7
+ belongs_to :shipment, class_name: "Spree::Shipment", touch: true, optional: true
8
8
  belongs_to :return_authorization, class_name: "Spree::ReturnAuthorization"
9
9
  belongs_to :line_item, class_name: "Spree::LineItem"
10
10
  end
@@ -14,13 +14,14 @@ module Spree
14
14
 
15
15
  scope :backordered, -> { where state: 'backordered' }
16
16
  scope :on_hand, -> { where state: 'on_hand' }
17
+ scope :on_hand_or_backordered, -> { where state: ['backordered', 'on_hand'] }
17
18
  scope :shipped, -> { where state: 'shipped' }
18
19
  scope :returned, -> { where state: 'returned' }
19
20
  scope :backordered_per_variant, ->(stock_item) do
20
21
  includes(:shipment, :order)
21
- .where("spree_shipments.state != 'canceled'").references(:shipment)
22
+ .where.not(spree_shipments: { state: 'canceled' })
22
23
  .where(variant_id: stock_item.variant_id)
23
- .where('spree_orders.completed_at is not null')
24
+ .where.not(spree_orders: { completed_at: nil })
24
25
  .backordered.order("spree_orders.completed_at ASC")
25
26
  end
26
27
 
@@ -52,13 +53,8 @@ module Spree
52
53
  end
53
54
  end
54
55
 
55
- def self.finalize_units!(inventory_units)
56
- inventory_units.map do |iu|
57
- iu.update_columns(
58
- pending: false,
59
- updated_at: Time.current,
60
- )
61
- end
56
+ def self.finalize_units!
57
+ update_all(pending: false, updated_at: Time.current)
62
58
  end
63
59
 
64
60
  def find_stock_item
@@ -16,14 +16,15 @@ module Spree
16
16
  before_validation :copy_price
17
17
  before_validation :copy_tax_category
18
18
 
19
- validates :variant, presence: true
19
+ validates :variant, :order, presence: true
20
20
  validates :quantity, numericality: { only_integer: true, message: Spree.t('validation.must_be_int') }
21
21
  validates :price, numericality: true
22
22
 
23
23
  validates_with Stock::AvailabilityValidator
24
- validate :ensure_proper_currency
24
+ validate :ensure_proper_currency, if: -> { order.present? }
25
+
26
+ before_destroy :verify_order_inventory, if: -> { order.has_checkout_step?("delivery") }
25
27
 
26
- before_destroy :update_inventory
27
28
  before_destroy :destroy_inventory_units
28
29
 
29
30
  after_save :update_inventory
@@ -31,7 +32,8 @@ module Spree
31
32
 
32
33
  after_create :update_tax_charge
33
34
 
34
- delegate :name, :description, :sku, :should_track_inventory?, :product, to: :variant
35
+ delegate :name, :description, :sku, :should_track_inventory?, :product, :options_text, to: :variant
36
+ delegate :brand, :category, to: :product
35
37
  delegate :tax_zone, to: :order
36
38
 
37
39
  attr_accessor :target_shipment
@@ -107,6 +109,11 @@ module Spree
107
109
  assign_attributes opts
108
110
  end
109
111
 
112
+ # Remove variant default_scope `deleted_at: nil`
113
+ def variant
114
+ Spree::Variant.unscoped { super }
115
+ end
116
+
110
117
  private
111
118
 
112
119
  def ensure_valid_quantity
@@ -126,12 +133,16 @@ module Spree
126
133
 
127
134
  def update_inventory
128
135
  if (changed? || target_shipment.present?) && order.has_checkout_step?("delivery")
129
- Spree::OrderInventory.new(order, self).verify(target_shipment)
136
+ verify_order_inventory
130
137
  end
131
138
  end
132
139
 
140
+ def verify_order_inventory
141
+ Spree::OrderInventory.new(order, self).verify(target_shipment)
142
+ end
143
+
133
144
  def destroy_inventory_units
134
- inventory_units.destroy_all
145
+ throw(:abort) unless inventory_units.destroy_all
135
146
  end
136
147
 
137
148
  def update_adjustments
@@ -62,7 +62,7 @@ module Spree
62
62
 
63
63
  event :return do
64
64
  transition to: :returned,
65
- from: [:complete, :awaiting_return, :canceled, :returned],
65
+ from: [:complete, :awaiting_return, :canceled, :resumed],
66
66
  if: :all_inventory_units_returned?
67
67
  end
68
68
 
@@ -214,7 +214,7 @@ module Spree
214
214
  checkout_step_index(state) > checkout_step_index(self.state)
215
215
  end
216
216
 
217
- define_callbacks :updating_from_params, terminator: ->(_target, result) { result == false }
217
+ define_callbacks :updating_from_params
218
218
 
219
219
  set_callback :updating_from_params, :before, :update_params_payment_source
220
220