spree_core 4.3.0.rc1 → 4.4.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (537) hide show
  1. checksums.yaml +4 -4
  2. data/app/finders/spree/option_values/find_available.rb +9 -1
  3. data/app/finders/spree/products/find.rb +27 -3
  4. data/app/finders/spree/taxons/find.rb +22 -6
  5. data/app/helpers/spree/base_helper.rb +8 -10
  6. data/app/helpers/spree/currency_helper.rb +1 -1
  7. data/app/helpers/spree/products_helper.rb +1 -15
  8. data/app/jobs/spree/base_job.rb +4 -0
  9. data/app/jobs/spree/stock_locations/stock_items/create_job.rb +13 -0
  10. data/app/models/concerns/spree/default_price.rb +1 -1
  11. data/app/models/concerns/spree/display_money.rb +8 -2
  12. data/app/models/concerns/spree/image_methods.rb +24 -0
  13. data/app/models/concerns/spree/memoized_data.rb +1 -1
  14. data/app/models/concerns/spree/metadata.rb +10 -0
  15. data/app/models/concerns/spree/multi_store_resource.rb +1 -1
  16. data/app/models/concerns/spree/named_type.rb +1 -1
  17. data/app/models/concerns/spree/number_identifier.rb +18 -0
  18. data/app/models/concerns/spree/product_scopes.rb +64 -22
  19. data/app/models/concerns/spree/single_store_resource.rb +10 -0
  20. data/app/models/concerns/spree/unique_name.rb +10 -0
  21. data/app/models/concerns/spree/user_methods.rb +18 -8
  22. data/app/models/concerns/spree/user_reporting.rb +35 -10
  23. data/app/models/concerns/spree/user_roles.rb +43 -0
  24. data/app/models/spree/ability.rb +11 -3
  25. data/app/models/spree/address.rb +4 -2
  26. data/app/models/spree/adjustment.rb +1 -0
  27. data/app/models/spree/app_configuration.rb +21 -24
  28. data/app/models/spree/asset.rb +1 -0
  29. data/app/models/spree/base.rb +14 -0
  30. data/app/models/spree/calculator/flat_rate.rb +1 -1
  31. data/app/models/spree/calculator/flexi_rate.rb +1 -1
  32. data/app/models/spree/calculator/price_sack.rb +1 -1
  33. data/app/models/spree/calculator/shipping/digital_delivery.rb +22 -0
  34. data/app/models/spree/calculator/shipping/flat_rate.rb +1 -1
  35. data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -1
  36. data/app/models/spree/calculator/shipping/per_item.rb +1 -1
  37. data/app/models/spree/calculator/shipping/price_sack.rb +1 -1
  38. data/app/models/spree/calculator.rb +1 -1
  39. data/app/models/spree/cms/sections/featured_article.rb +0 -7
  40. data/app/models/spree/cms/sections/hero_image.rb +0 -9
  41. data/app/models/spree/cms/sections/image_gallery.rb +2 -2
  42. data/app/models/spree/cms/sections/side_by_side_images.rb +2 -2
  43. data/app/models/spree/cms_page.rb +3 -3
  44. data/app/models/spree/cms_section.rb +13 -1
  45. data/app/models/spree/country.rb +4 -2
  46. data/app/models/spree/credit_card.rb +10 -0
  47. data/app/models/spree/customer_return.rb +3 -1
  48. data/app/models/spree/digital.rb +15 -0
  49. data/app/models/spree/digital_link.rb +50 -0
  50. data/app/models/spree/gateway/bogus.rb +10 -4
  51. data/app/models/spree/image/configuration/active_storage.rb +2 -19
  52. data/app/models/spree/image.rb +5 -24
  53. data/app/models/spree/legacy_user.rb +1 -0
  54. data/app/models/spree/line_item.rb +11 -3
  55. data/app/models/spree/option_type.rb +4 -4
  56. data/app/models/spree/option_value.rb +2 -0
  57. data/app/models/spree/order/checkout.rb +7 -1
  58. data/app/models/spree/order/digital.rb +33 -0
  59. data/app/models/spree/order.rb +34 -22
  60. data/app/models/spree/order_inventory.rb +1 -1
  61. data/app/models/spree/order_promotion.rb +1 -1
  62. data/app/models/spree/payment/processing.rb +1 -0
  63. data/app/models/spree/payment.rb +25 -4
  64. data/app/models/spree/payment_method.rb +15 -1
  65. data/app/models/spree/preference.rb +2 -1
  66. data/app/models/spree/preferences/configuration.rb +2 -2
  67. data/app/models/spree/preferences/store.rb +1 -1
  68. data/app/models/spree/price.rb +1 -1
  69. data/app/models/spree/product.rb +28 -25
  70. data/app/models/spree/promotion/rules/product.rb +1 -1
  71. data/app/models/spree/promotion.rb +3 -1
  72. data/app/models/spree/promotion_action.rb +1 -1
  73. data/app/models/spree/property.rb +2 -1
  74. data/app/models/spree/prototype.rb +2 -0
  75. data/app/models/spree/refund.rb +2 -0
  76. data/app/models/spree/reimbursement.rb +1 -1
  77. data/app/models/spree/return_authorization.rb +3 -2
  78. data/app/models/spree/return_item.rb +1 -1
  79. data/app/models/spree/role.rb +2 -2
  80. data/app/models/spree/shipment.rb +4 -30
  81. data/app/models/spree/shipping_category.rb +1 -1
  82. data/app/models/spree/shipping_method.rb +2 -0
  83. data/app/models/spree/state.rb +1 -1
  84. data/app/models/spree/stock/quantifier.rb +1 -1
  85. data/app/models/spree/stock/splitter/digital.rb +35 -0
  86. data/app/models/spree/stock_item.rb +2 -2
  87. data/app/models/spree/stock_location.rb +15 -28
  88. data/app/models/spree/stock_movement.rb +3 -0
  89. data/app/models/spree/stock_transfer.rb +3 -6
  90. data/app/models/spree/store.rb +43 -10
  91. data/app/models/spree/store_credit.rb +5 -1
  92. data/app/models/spree/store_credit_category.rb +2 -0
  93. data/app/models/spree/store_credit_event.rb +2 -7
  94. data/app/models/spree/store_credit_type.rb +2 -0
  95. data/app/models/spree/tax_category.rb +3 -1
  96. data/app/models/spree/tax_rate.rb +3 -1
  97. data/app/models/spree/taxon.rb +12 -0
  98. data/app/models/spree/taxon_image/configuration/active_storage.rb +2 -12
  99. data/app/models/spree/taxon_image.rb +1 -0
  100. data/app/models/spree/taxonomy.rb +7 -0
  101. data/app/models/spree/variant.rb +29 -13
  102. data/app/models/spree/wished_item.rb +29 -0
  103. data/app/models/spree/wishlist.rb +35 -0
  104. data/app/models/spree/zone.rb +8 -6
  105. data/app/presenters/spree/filters/options_presenter.rb +20 -0
  106. data/app/presenters/spree/filters/property_presenter.rb +20 -0
  107. data/app/services/spree/account/addresses/create.rb +1 -17
  108. data/app/services/spree/account/addresses/update.rb +1 -22
  109. data/app/services/spree/addresses/create.rb +24 -0
  110. data/app/services/spree/addresses/helper.rb +41 -0
  111. data/app/services/spree/addresses/update.rb +27 -0
  112. data/app/services/spree/cart/add_item.rb +4 -2
  113. data/app/services/spree/cart/associate.rb +16 -0
  114. data/app/services/spree/cart/change_currency.rb +27 -0
  115. data/app/services/spree/cart/create.rb +4 -2
  116. data/app/services/spree/cart/update.rb +2 -2
  117. data/app/services/spree/checkout/add_store_credit.rb +4 -1
  118. data/app/services/spree/checkout/select_shipping_method.rb +49 -0
  119. data/app/services/spree/checkout/update.rb +3 -10
  120. data/app/services/spree/line_items/create.rb +20 -0
  121. data/app/services/spree/line_items/destroy.rb +18 -0
  122. data/app/services/spree/line_items/helper.rb +11 -0
  123. data/app/services/spree/line_items/update.rb +17 -0
  124. data/app/services/spree/orders/approve.rb +18 -0
  125. data/app/services/spree/orders/cancel.rb +18 -0
  126. data/app/services/spree/payments/create.rb +66 -0
  127. data/app/services/spree/seeds/all.rb +26 -0
  128. data/app/services/spree/seeds/countries.rb +50 -0
  129. data/app/services/spree/seeds/default_reimbursement_types.rb +12 -0
  130. data/app/services/spree/seeds/roles.rb +11 -0
  131. data/app/services/spree/seeds/shipping_categories.rb +12 -0
  132. data/app/services/spree/seeds/states.rb +72 -0
  133. data/app/services/spree/seeds/stock_locations.rb +18 -0
  134. data/app/services/spree/seeds/store_credit_categories.rb +12 -0
  135. data/app/services/spree/seeds/stores.rb +31 -0
  136. data/app/services/spree/seeds/zones.rb +39 -0
  137. data/app/services/spree/shipments/add_item.rb +32 -0
  138. data/app/services/spree/shipments/change_state.rb +14 -0
  139. data/app/services/spree/shipments/create.rb +48 -0
  140. data/app/services/spree/shipments/helper.rb +23 -0
  141. data/app/services/spree/shipments/remove_item.rb +55 -0
  142. data/app/services/spree/shipments/update.rb +40 -0
  143. data/app/services/spree/stock_locations/stock_items/create.rb +31 -0
  144. data/app/services/spree/wallet/create_payment_source.rb +26 -0
  145. data/app/sorters/spree/base_sorter.rb +23 -11
  146. data/app/sorters/spree/products/sort.rb +23 -7
  147. data/app/validators/spree/url_validator.rb +23 -0
  148. data/brakeman.ignore +20 -0
  149. data/config/initializers/active_storage.rb +0 -6
  150. data/config/locales/en.yml +24 -168
  151. data/db/migrate/20210914000000_spree_four_three.rb +1205 -0
  152. data/db/migrate/20210915064321_add_metadata_to_spree_orders.rb +13 -0
  153. data/db/migrate/20210915064322_add_metadata_to_spree_products.rb +13 -0
  154. data/db/migrate/20210915064323_add_metadata_to_spree_variants.rb +13 -0
  155. data/db/migrate/20210915064324_add_metadata_to_spree_line_items.rb +13 -0
  156. data/db/migrate/20210915064325_add_metadata_to_spree_shipments.rb +13 -0
  157. data/db/migrate/20210915064326_add_metadata_to_spree_payments.rb +13 -0
  158. data/db/migrate/20210915064327_add_metadata_to_spree_taxons_and_taxonomies.rb +18 -0
  159. data/db/migrate/20210915064328_add_metadata_to_spree_stock_transfers.rb +13 -0
  160. data/db/migrate/20210915064329_add_metadata_to_spree_multiple_tables.rb +30 -0
  161. data/db/migrate/20210920090344_add_deleted_at_to_spree_stores.rb +8 -0
  162. data/db/migrate/20210921070812_rename_column_access_hash_to_token.rb +8 -0
  163. data/db/migrate/20210921070813_create_spree_wishlists.rb +18 -0
  164. data/db/migrate/20210921070814_create_spree_wished_products.rb +16 -0
  165. data/db/migrate/20210921070815_rename_spree_wished_products_to_spree_wished_items.rb +5 -0
  166. data/db/migrate/20210921090344_add_unique_stock_item_stock_location_variant_deleted_at_index.rb +5 -0
  167. data/db/migrate/20210929090344_create_stock_item_stock_location_id_variant_id_coalesce_deleted_at_unique_index.rb +32 -0
  168. data/db/migrate/20210929091444_create_spree_digital_links.rb +13 -0
  169. data/db/migrate/20210929093238_create_spree_digitals.rb +9 -0
  170. data/db/migrate/20210930143043_rename_secret_to_token_on_spree_digital_links.rb +5 -0
  171. data/db/migrate/20210930155649_add_settings_to_spree_stores.rb +11 -0
  172. data/db/seeds.rb +1 -5
  173. data/lib/generators/spree/dummy/dummy_generator.rb +2 -2
  174. data/lib/generators/spree/dummy/templates/rails/database.yml +20 -18
  175. data/lib/generators/spree/dummy/templates/rails/test.rb +2 -0
  176. data/{app/models/spree → lib/spree/core}/app_dependencies.rb +34 -4
  177. data/lib/spree/core/controller_helpers/auth.rb +4 -4
  178. data/lib/spree/core/controller_helpers/common.rb +15 -1
  179. data/lib/spree/core/controller_helpers/currency.rb +1 -1
  180. data/lib/spree/core/controller_helpers/store.rb +14 -0
  181. data/lib/spree/{dependencies_helper.rb → core/dependencies_helper.rb} +0 -0
  182. data/lib/spree/core/engine.rb +10 -4
  183. data/lib/spree/core/importer/product.rb +1 -1
  184. data/lib/spree/core/number_generator.rb +0 -2
  185. data/lib/spree/core/version.rb +1 -1
  186. data/lib/spree/core.rb +21 -13
  187. data/lib/spree/money.rb +2 -2
  188. data/lib/spree/permitted_attributes.rb +38 -13
  189. data/lib/spree/testing_support/authorization_helpers.rb +3 -1
  190. data/lib/spree/testing_support/capybara_config.rb +14 -19
  191. data/lib/spree/testing_support/capybara_ext.rb +1 -6
  192. data/lib/spree/testing_support/common_rake.rb +22 -4
  193. data/lib/spree/testing_support/factories/asset_factory.rb +15 -0
  194. data/lib/spree/testing_support/factories/cms_section_factory.rb +2 -2
  195. data/lib/spree/testing_support/factories/digital_factory.rb +10 -0
  196. data/lib/spree/testing_support/factories/digital_link_factory.rb +6 -0
  197. data/lib/spree/testing_support/factories/log_entry_factory.rb +6 -0
  198. data/lib/spree/testing_support/factories/order_factory.rb +4 -1
  199. data/lib/spree/testing_support/factories/payment_capture_event_factory.rb +6 -0
  200. data/lib/spree/testing_support/factories/payment_factory.rb +3 -3
  201. data/lib/spree/testing_support/factories/product_factory.rb +6 -0
  202. data/lib/spree/testing_support/factories/promotion_action_factory.rb +5 -0
  203. data/lib/spree/testing_support/factories/reimbursement_credit_factory.rb +7 -0
  204. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +7 -0
  205. data/lib/spree/testing_support/factories/state_change_factory.rb +8 -0
  206. data/lib/spree/testing_support/factories/stock_item_factory.rb +7 -0
  207. data/lib/spree/testing_support/factories/stock_location_factory.rb +1 -1
  208. data/lib/spree/testing_support/factories/stock_transfer_factory.rb +9 -0
  209. data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
  210. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +5 -0
  211. data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -0
  212. data/lib/spree/testing_support/factories/user_factory.rb +2 -0
  213. data/lib/spree/testing_support/factories/wished_variant_factory.rb +6 -0
  214. data/lib/spree/testing_support/factories/wishlist_factory.rb +18 -0
  215. data/lib/spree/testing_support/jobs.rb +9 -0
  216. data/lib/spree/testing_support/locale_helpers.rb +1 -1
  217. data/lib/spree/testing_support/rspec_retry_config.rb +5 -0
  218. data/lib/tasks/core.rake +4 -4
  219. data/spree_core.gemspec +3 -2
  220. metadata +109 -325
  221. data/app/services/spree/account/addresses/helper.rb +0 -43
  222. data/app/services/spree/build_localized_redirect_url.rb +0 -101
  223. data/app/views/spree/shared/_purchased_items_table.text.erb +0 -25
  224. data/db/default/spree/countries.rb +0 -24
  225. data/db/default/spree/default_reimbursement_type.rb +0 -1
  226. data/db/default/spree/roles.rb +0 -2
  227. data/db/default/spree/states.rb +0 -49
  228. data/db/default/spree/store_credit_categories.rb +0 -1
  229. data/db/default/spree/stores.rb +0 -21
  230. data/db/default/spree/zones.rb +0 -29
  231. data/db/migrate/20120831092320_spree_one_two.rb +0 -481
  232. data/db/migrate/20120831092359_spree_promo_one_two.rb +0 -45
  233. data/db/migrate/20120905145253_add_tax_rate_label.rb +0 -5
  234. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +0 -5
  235. data/db/migrate/20120929093553_remove_unused_preference_columns.rb +0 -8
  236. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +0 -5
  237. data/db/migrate/20121010142909_add_states_required_to_countries.rb +0 -5
  238. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +0 -6
  239. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +0 -11
  240. data/db/migrate/20121031162139_split_prices_from_variants.rb +0 -31
  241. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +0 -9
  242. data/db/migrate/20121107184631_add_currency_to_line_items.rb +0 -5
  243. data/db/migrate/20121107194006_add_currency_to_orders.rb +0 -5
  244. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +0 -5
  245. data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +0 -5
  246. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +0 -5
  247. data/db/migrate/20121126040517_add_last_ip_to_spree_orders.rb +0 -5
  248. data/db/migrate/20121213162028_add_state_to_spree_adjustments.rb +0 -6
  249. data/db/migrate/20130114053446_add_display_on_to_spree_payment_methods.rb +0 -9
  250. data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +0 -6
  251. data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +0 -5
  252. data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +0 -9
  253. data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +0 -5
  254. data/db/migrate/20130211190146_create_spree_stock_items.rb +0 -14
  255. data/db/migrate/20130211191120_create_spree_stock_locations.rb +0 -11
  256. data/db/migrate/20130213191427_create_default_stock.rb +0 -33
  257. data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +0 -5
  258. data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +0 -5
  259. data/db/migrate/20130226191231_add_stock_location_id_to_spree_shipments.rb +0 -5
  260. data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +0 -6
  261. data/db/migrate/20130228164411_remove_on_demand_from_product_and_variant.rb +0 -6
  262. data/db/migrate/20130228210442_create_shipping_method_zone.rb +0 -21
  263. data/db/migrate/20130301162745_remove_shipping_category_id_from_shipping_method.rb +0 -5
  264. data/db/migrate/20130301162924_create_shipping_method_categories.rb +0 -13
  265. data/db/migrate/20130301205200_add_tracking_url_to_spree_shipping_methods.rb +0 -5
  266. data/db/migrate/20130304162240_create_spree_shipping_rates.rb +0 -24
  267. data/db/migrate/20130304192936_remove_category_match_attributes_from_shipping_method.rb +0 -7
  268. data/db/migrate/20130305143310_create_stock_movements.rb +0 -12
  269. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +0 -22
  270. data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +0 -5
  271. data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +0 -5
  272. data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +0 -5
  273. data/db/migrate/20130318151756_add_source_and_destination_to_stock_movements.rb +0 -8
  274. data/db/migrate/20130319062004_change_orders_total_precision.rb +0 -8
  275. data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +0 -7
  276. data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +0 -7
  277. data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +0 -7
  278. data/db/migrate/20130319183250_add_originator_to_stock_movement.rb +0 -7
  279. data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +0 -15
  280. data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +0 -9
  281. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +0 -5
  282. data/db/migrate/20130328130308_update_shipment_state_for_canceled_orders.rb +0 -15
  283. data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +0 -9
  284. data/db/migrate/20130329134939_remove_stock_item_and_variant_lock.rb +0 -14
  285. data/db/migrate/20130413230529_add_name_to_spree_credit_cards.rb +0 -5
  286. data/db/migrate/20130414000512_update_name_fields_on_spree_credit_cards.rb +0 -13
  287. data/db/migrate/20130417120034_add_index_to_source_columns_on_adjustments.rb +0 -5
  288. data/db/migrate/20130417120035_update_adjustment_states.rb +0 -16
  289. data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +0 -15
  290. data/db/migrate/20130418125341_create_spree_stock_transfers.rb +0 -14
  291. data/db/migrate/20130423110707_drop_products_count_on_hand.rb +0 -5
  292. data/db/migrate/20130423223847_set_default_shipping_rate_cost.rb +0 -5
  293. data/db/migrate/20130509115210_add_number_to_stock_transfer.rb +0 -23
  294. data/db/migrate/20130514151929_add_sku_index_to_spree_variants.rb +0 -5
  295. data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +0 -5
  296. data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +0 -5
  297. data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +0 -5
  298. data/db/migrate/20130611185927_add_user_id_index_to_spree_orders.rb +0 -5
  299. data/db/migrate/20130618041418_add_updated_at_to_spree_countries.rb +0 -9
  300. data/db/migrate/20130619012236_add_updated_at_to_spree_states.rb +0 -9
  301. data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +0 -6
  302. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +0 -5
  303. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +0 -7
  304. data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +0 -5
  305. data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +0 -6
  306. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +0 -5
  307. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +0 -6
  308. data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +0 -5
  309. data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +0 -5
  310. data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +0 -5
  311. data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +0 -10
  312. data/db/migrate/20130806022521_drop_spree_mail_methods.rb +0 -12
  313. data/db/migrate/20130806145853_set_default_stock_location_on_shipments.rb +0 -8
  314. data/db/migrate/20130807024301_upgrade_adjustments.rb +0 -46
  315. data/db/migrate/20130807024302_rename_adjustment_fields.rb +0 -20
  316. data/db/migrate/20130809164245_add_admin_name_column_to_spree_shipping_methods.rb +0 -5
  317. data/db/migrate/20130809164330_add_admin_name_column_to_spree_stock_locations.rb +0 -5
  318. data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +0 -5
  319. data/db/migrate/20130813140619_expand_order_number_size.rb +0 -9
  320. data/db/migrate/20130813232134_rename_activators_to_promotions.rb +0 -5
  321. data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +0 -5
  322. data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +0 -5
  323. data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +0 -16
  324. data/db/migrate/20130828234942_add_tax_total_to_line_items_shipments_and_orders.rb +0 -8
  325. data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +0 -15
  326. data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +0 -19
  327. data/db/migrate/20130903183026_add_code_to_spree_promotion_rules.rb +0 -5
  328. data/db/migrate/20130909115621_change_states_required_for_countries.rb +0 -9
  329. data/db/migrate/20130915032339_add_deleted_at_to_spree_stock_items.rb +0 -5
  330. data/db/migrate/20130917024658_remove_promotions_event_name_field.rb +0 -5
  331. data/db/migrate/20130924040529_add_promo_total_to_line_items_and_shipments_and_orders.rb +0 -7
  332. data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +0 -16
  333. data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +0 -5
  334. data/db/migrate/20131107132123_add_tax_category_to_variants.rb +0 -6
  335. data/db/migrate/20131113035136_add_channel_to_spree_orders.rb +0 -5
  336. data/db/migrate/20131118043959_add_included_to_adjustments.rb +0 -5
  337. data/db/migrate/20131118050234_rename_tax_total_fields.rb +0 -11
  338. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +0 -21
  339. data/db/migrate/20131120234456_add_updated_at_to_variants.rb +0 -5
  340. data/db/migrate/20131127001002_add_position_to_classifications.rb +0 -5
  341. data/db/migrate/20131211112807_create_spree_orders_promotions.rb +0 -8
  342. data/db/migrate/20131211192741_unique_shipping_method_categories.rb +0 -24
  343. data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +0 -5
  344. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +0 -8
  345. data/db/migrate/20140106224208_rename_permalink_to_slug_for_products.rb +0 -5
  346. data/db/migrate/20140120160805_add_index_to_variant_id_and_currency_on_prices.rb +0 -5
  347. data/db/migrate/20140124023232_rename_activator_id_in_rules_and_actions_to_promotion_id.rb +0 -6
  348. data/db/migrate/20140129024326_add_deleted_at_to_spree_prices.rb +0 -5
  349. data/db/migrate/20140203161722_add_approver_id_and_approved_at_to_orders.rb +0 -6
  350. data/db/migrate/20140204115338_add_confirmation_delivered_to_spree_orders.rb +0 -5
  351. data/db/migrate/20140204192230_add_auto_capture_to_payment_methods.rb +0 -5
  352. data/db/migrate/20140205120320_create_spree_payment_capture_events.rb +0 -12
  353. data/db/migrate/20140205144710_add_uncaptured_amount_to_payments.rb +0 -5
  354. data/db/migrate/20140205181631_default_variant_weight_to_zero.rb +0 -11
  355. data/db/migrate/20140207085910_add_tax_category_id_to_shipping_methods.rb +0 -5
  356. data/db/migrate/20140207093021_add_tax_rate_id_to_shipping_rates.rb +0 -5
  357. data/db/migrate/20140211040159_add_pre_tax_amount_to_line_items_and_shipments.rb +0 -6
  358. data/db/migrate/20140213184916_add_more_indexes.rb +0 -13
  359. data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +0 -5
  360. data/db/migrate/20140227112348_add_preference_store_to_everything.rb +0 -8
  361. data/db/migrate/20140307235515_add_user_id_to_spree_credit_cards.rb +0 -13
  362. data/db/migrate/20140309023735_migrate_old_preferences.rb +0 -27
  363. data/db/migrate/20140309024355_create_spree_stores.rb +0 -25
  364. data/db/migrate/20140309033438_create_store_from_preferences.rb +0 -42
  365. data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +0 -6
  366. data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +0 -8
  367. data/db/migrate/20140331100557_add_additional_store_fields.rb +0 -8
  368. data/db/migrate/20140410141842_add_many_missing_indexes.rb +0 -18
  369. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +0 -66
  370. data/db/migrate/20140415041315_add_user_id_created_by_id_index_to_order.rb +0 -5
  371. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +0 -8
  372. data/db/migrate/20140518174634_add_token_to_spree_orders.rb +0 -5
  373. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +0 -29
  374. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +0 -10
  375. data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +0 -6
  376. data/db/migrate/20140609201656_add_deleted_at_to_spree_promotion_actions.rb +0 -6
  377. data/db/migrate/20140616202624_remove_uncaptured_amount_from_spree_payments.rb +0 -5
  378. data/db/migrate/20140625214618_create_spree_refunds.rb +0 -12
  379. data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +0 -12
  380. data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +0 -5
  381. data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +0 -10
  382. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +0 -55
  383. data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +0 -7
  384. data/db/migrate/20140710190048_drop_return_authorization_amount.rb +0 -5
  385. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +0 -28
  386. data/db/migrate/20140713140527_create_spree_refund_reasons.rb +0 -14
  387. data/db/migrate/20140713142214_rename_return_authorization_reason.rb +0 -5
  388. data/db/migrate/20140715182625_create_spree_promotion_categories.rb +0 -11
  389. data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +0 -9
  390. data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +0 -6
  391. data/db/migrate/20140717155155_create_default_refund_reason.rb +0 -9
  392. data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +0 -7
  393. data/db/migrate/20140718133010_create_spree_customer_returns.rb +0 -9
  394. data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +0 -6
  395. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +0 -15
  396. data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +0 -5
  397. data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +0 -13
  398. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +0 -15
  399. data/db/migrate/20140725131539_create_spree_reimbursements.rb +0 -21
  400. data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +0 -5
  401. data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +0 -7
  402. data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +0 -5
  403. data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +0 -20
  404. data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +0 -10
  405. data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +0 -5
  406. data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +0 -9
  407. data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +0 -10
  408. data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +0 -7
  409. data/db/migrate/20140911173301_add_kind_to_zone.rb +0 -11
  410. data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +0 -5
  411. data/db/migrate/20140927193717_default_pre_tax_amount_should_be_zero.rb +0 -6
  412. data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +0 -5
  413. data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +0 -6
  414. data/db/migrate/20141009204607_add_store_id_to_orders.rb +0 -8
  415. data/db/migrate/20141012083513_create_spree_taxons_prototypes.rb +0 -8
  416. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
  417. data/db/migrate/20141023005240_add_counter_cache_from_spree_variants_to_spree_stock_items.rb +0 -8
  418. data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +0 -13
  419. data/db/migrate/20141105213646_update_classifications_positions.rb +0 -9
  420. data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +0 -5
  421. data/db/migrate/20141215232040_remove_token_permissions_table.rb +0 -6
  422. data/db/migrate/20141215235502_remove_extra_products_slug_index.rb +0 -5
  423. data/db/migrate/20141217215630_update_product_slug_index.rb +0 -6
  424. data/db/migrate/20141218025915_rename_identifier_to_number_for_payment.rb +0 -5
  425. data/db/migrate/20150118210639_create_spree_store_credits.rb +0 -24
  426. data/db/migrate/20150118211500_create_spree_store_credit_categories.rb +0 -8
  427. data/db/migrate/20150118212051_create_spree_store_credit_events.rb +0 -17
  428. data/db/migrate/20150118212101_create_spree_store_credit_types.rb +0 -10
  429. data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +0 -6
  430. data/db/migrate/20150122145607_add_resellable_to_return_items.rb +0 -5
  431. data/db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb +0 -5
  432. data/db/migrate/20150128032538_remove_environment_from_tracker.rb +0 -8
  433. data/db/migrate/20150128060325_remove_spree_configurations.rb +0 -16
  434. data/db/migrate/20150216173445_add_index_to_spree_stock_items_variant_id.rb +0 -13
  435. data/db/migrate/20150309161154_ensure_payments_have_numbers.rb +0 -13
  436. data/db/migrate/20150314013438_add_missing_indexes_on_spree_tables.rb +0 -67
  437. data/db/migrate/20150317174308_remove_duplicated_indexes_from_multi_columns.rb +0 -18
  438. data/db/migrate/20150324104002_remove_user_index_from_spree_state_changes.rb +0 -14
  439. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -70
  440. data/db/migrate/20150522071831_add_position_to_spree_payment_methods.rb +0 -5
  441. data/db/migrate/20150522181728_add_deleted_at_to_friendly_id_slugs.rb +0 -6
  442. data/db/migrate/20150609093816_increase_scale_on_pre_tax_amounts.rb +0 -16
  443. data/db/migrate/20150626181949_add_taxable_adjustment_total_to_line_item.rb +0 -19
  444. data/db/migrate/20150627090949_migrate_payment_methods_display.rb +0 -12
  445. data/db/migrate/20150707204155_enable_acts_as_paranoid_on_calculators.rb +0 -6
  446. data/db/migrate/20150714154102_spree_payment_method_store_credits.rb +0 -12
  447. data/db/migrate/20150726141425_rename_has_and_belongs_to_associations_to_model_names.rb +0 -18
  448. data/db/migrate/20150727191614_spree_store_credit_types.rb +0 -11
  449. data/db/migrate/20150819154308_add_discontinued_to_products_and_variants.rb +0 -68
  450. data/db/migrate/20151220072838_remove_shipping_method_id_from_spree_orders.rb +0 -13
  451. data/db/migrate/20160207191757_add_id_column_to_earlier_habtm_tables.rb +0 -16
  452. data/db/migrate/20160219165458_add_indexes.rb +0 -14
  453. data/db/migrate/20160509064646_remove_counter_cache_from_spree_variants_to_spree_stock_items.rb +0 -10
  454. data/db/migrate/20160608090604_add_zipcode_required_to_spree_countries.rb +0 -7
  455. data/db/migrate/20161014145148_add_created_at_to_variant.rb +0 -8
  456. data/db/migrate/20161014152814_add_null_false_to_spree_variants_timestamps.rb +0 -6
  457. data/db/migrate/20161125065505_add_quantity_to_inventory_units.rb +0 -5
  458. data/db/migrate/20170119122701_add_original_return_item_id_to_spree_inventory_units.rb +0 -29
  459. data/db/migrate/20170315152755_add_unique_index_on_number_to_spree_orders.rb +0 -16
  460. data/db/migrate/20170316154338_add_unique_index_on_number_to_spree_stock_transfer.rb +0 -16
  461. data/db/migrate/20170316205511_add_unique_index_on_number_to_spree_shipment.rb +0 -16
  462. data/db/migrate/20170320134043_add_unique_index_on_number_to_spree_payments.rb +0 -17
  463. data/db/migrate/20170320142750_add_unique_index_on_number_to_spree_return_authorizations.rb +0 -16
  464. data/db/migrate/20170320145040_add_unique_index_on_number_to_spree_customer_returns.rb +0 -16
  465. data/db/migrate/20170320145518_add_unique_index_on_number_to_spree_reimbursements.rb +0 -16
  466. data/db/migrate/20170323151450_add_missing_unique_indexes_for_unique_attributes.rb +0 -37
  467. data/db/migrate/20170329110859_add_index_on_stock_location_to_spree_customer_returns.rb +0 -5
  468. data/db/migrate/20170329113917_add_index_on_prototype_to_spree_option_type_prototype.rb +0 -19
  469. data/db/migrate/20170330082155_add_indexes_to_spree_option_value_variant.rb +0 -19
  470. data/db/migrate/20170330132215_add_index_on_promotion_id_to_order_promotions.rb +0 -5
  471. data/db/migrate/20170331101758_add_indexes_for_property_prototype.rb +0 -20
  472. data/db/migrate/20170331103334_add_index_for_prototype_id_to_prototype_taxons.rb +0 -5
  473. data/db/migrate/20170331110454_add_indexes_to_refunds.rb +0 -6
  474. data/db/migrate/20170331111757_add_indexes_to_reimbursement_credits.rb +0 -6
  475. data/db/migrate/20170331115246_add_indexes_to_return_authorizations.rb +0 -6
  476. data/db/migrate/20170331120125_add_indexes_to_return_items.rb +0 -11
  477. data/db/migrate/20170331121725_add_index_to_role_users.rb +0 -18
  478. data/db/migrate/20170331123625_add_index_to_shipping_method_categories.rb +0 -5
  479. data/db/migrate/20170331123832_add_index_to_shipping_method_zones.rb +0 -20
  480. data/db/migrate/20170331124251_add_index_to_spree_shipping_rates.rb +0 -6
  481. data/db/migrate/20170331124513_add_index_to_spree_stock_items.rb +0 -5
  482. data/db/migrate/20170331124924_add_index_to_spree_stock_movement.rb +0 -5
  483. data/db/migrate/20170413211707_change_indexes_on_friendly_id_slugs.rb +0 -10
  484. data/db/migrate/20170722102643_add_analytics_kind_to_spree_trackers.rb +0 -5
  485. data/db/migrate/20170727103056_rename_tracker_kind_field.rb +0 -5
  486. data/db/migrate/20171004223836_remove_icon_from_taxons.rb +0 -8
  487. data/db/migrate/20180222133746_add_unique_index_on_spree_promotions_code.rb +0 -6
  488. data/db/migrate/20180613080857_rename_guest_token_to_token_in_orders.rb +0 -5
  489. data/db/migrate/20180915160001_add_timestamps_to_spree_prices.rb +0 -12
  490. data/db/migrate/20181024100754_add_deleted_at_to_spree_credit_cards.rb +0 -6
  491. data/db/migrate/20190305121659_add_iso_and_iso3_validation_on_presence_and_uniqueness.rb +0 -18
  492. data/db/migrate/20190523092729_add_user_id_and_deleted_at_to_spree_addresses.rb +0 -12
  493. data/db/migrate/20191005121504_add_store_id_to_payment_methods.rb +0 -7
  494. data/db/migrate/20191016134113_add_deafult_value_for_store_default_currency.rb +0 -5
  495. data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +0 -11
  496. data/db/migrate/20200102141311_add_social_to_spree_stores.rb +0 -10
  497. data/db/migrate/20200212144523_add_hide_from_nav_to_taxons.rb +0 -5
  498. data/db/migrate/20200308210757_add_default_locale_to_spree_store.rb +0 -7
  499. data/db/migrate/20200310145140_add_customer_support_email_to_spree_store.rb +0 -7
  500. data/db/migrate/20200421095017_add_compare_at_amount_to_spree_prices.rb +0 -7
  501. data/db/migrate/20200423123001_add_default_country_id_to_spree_store.rb +0 -9
  502. data/db/migrate/20200430072209_add_footer_fields_to_spree_stores.rb +0 -8
  503. data/db/migrate/20200513154939_add_show_property_to_spree_product_properties.rb +0 -5
  504. data/db/migrate/20200607161221_add_store_owner_order_notification_delivered_to_spree_orders.rb +0 -7
  505. data/db/migrate/20200607161222_add_new_order_notifications_email_to_spree_stores.rb +0 -7
  506. data/db/migrate/20200610113542_add_label_to_spree_addresses.rb +0 -5
  507. data/db/migrate/20200826075557_add_unique_index_on_taxon_id_and_product_id_to_spree_products_taxons.rb +0 -5
  508. data/db/migrate/20201006110150_add_checkout_zone_field_to_store.rb +0 -12
  509. data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +0 -10
  510. data/db/migrate/20201013084504_add_seo_robots_to_spree_stores.rb +0 -5
  511. data/db/migrate/20201023152810_add_filterable_to_spree_properties.rb +0 -8
  512. data/db/migrate/20201127084048_add_default_country_kind_to_spree_zones.rb +0 -5
  513. data/db/migrate/20210112193440_remove_contact_email_from_spree_stores.rb +0 -5
  514. data/db/migrate/20210114182625_create_spree_payment_methods_stores.rb +0 -10
  515. data/db/migrate/20210114220232_migrate_data_payment_methods_stores.rb +0 -15
  516. data/db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb +0 -5
  517. data/db/migrate/20210120142527_ensure_default_locale_in_spree_stores.rb +0 -5
  518. data/db/migrate/20210205211040_add_supported_locales_to_spree_stores.rb +0 -11
  519. data/db/migrate/20210215202602_migrate_spree_i18n_globalize_config.rb +0 -22
  520. data/db/migrate/20210407200948_create_spree_menus.rb +0 -16
  521. data/db/migrate/20210408092939_create_spree_menu_items.rb +0 -31
  522. data/db/migrate/20210504163720_add_filter_param_to_spree_product_properties.rb +0 -8
  523. data/db/migrate/20210505114659_add_filter_param_to_spree_properties.rb +0 -8
  524. data/db/migrate/20210512191732_create_spree_cms_pages.rb +0 -24
  525. data/db/migrate/20210514204251_create_spree_cms_sections.rb +0 -22
  526. data/db/migrate/20210527094055_create_spree_products_stores.rb +0 -29
  527. data/db/migrate/20210608045519_ensure_store_default_country_is_set.rb +0 -5
  528. data/db/migrate/20210702112334_add_missing_timestamp_columns.rb +0 -46
  529. data/db/migrate/20210713131614_add_unique_index_on_property_id_and_product_id_to_product_properties.rb +0 -29
  530. data/db/migrate/20210715091956_add_store_id_to_spree_store_credits.rb +0 -10
  531. data/db/migrate/20210716093151_add_store_id_to_spree_taxonomies.rb +0 -11
  532. data/db/migrate/20210716104141_add_index_on_name_parent_id_and_taxonomy_id_on_spree_taxons.rb +0 -31
  533. data/db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb +0 -31
  534. data/db/migrate/20210721125657_create_spree_promotions_stores.rb +0 -29
  535. data/db/migrate/20210722090705_add_store_id_to_spree_customer_returns.rb +0 -11
  536. data/db/migrate/20210726065456_change_integer_id_columns_into_bigint.rb +0 -305
  537. data/db/migrate/20210730154425_fix_promotion_code_and_path_unique_indexes.rb +0 -9
@@ -5,11 +5,10 @@ module Spree
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  included do
8
- validate :check_attachment_presence
9
- validate :check_attachment_content_type
10
-
11
8
  has_one_attached :attachment
12
9
 
10
+ validates :attachment, attached: true, content_type: /\Aimage\/.*\z/
11
+
13
12
  default_scope { includes(attachment_attachment: :blob) }
14
13
 
15
14
  def self.styles
@@ -32,22 +31,6 @@ module Spree
32
31
  def default_style
33
32
  :product
34
33
  end
35
-
36
- def accepted_image_types
37
- %w(image/jpeg image/jpg image/png image/gif)
38
- end
39
-
40
- def check_attachment_presence
41
- unless attachment.attached?
42
- errors.add(:attachment, :attachment_must_be_present)
43
- end
44
- end
45
-
46
- def check_attachment_content_type
47
- if attachment.attached? && !attachment.content_type.in?(accepted_image_types)
48
- errors.add(:attachment, :not_allowed_content_type)
49
- end
50
- end
51
34
  end
52
35
  end
53
36
  end
@@ -2,6 +2,7 @@ module Spree
2
2
  class Image < Asset
3
3
  include Configuration::ActiveStorage
4
4
  include Rails.application.routes.url_helpers
5
+ include ::Spree::ImageMethods
5
6
 
6
7
  # In Rails 5.x class constants are being undefined/redefined during the code reloading process
7
8
  # in a rails development environment, after which the actual ruby objects stored in those class constants
@@ -15,13 +16,8 @@ module Spree
15
16
  width, height = size.chop.split('x')
16
17
 
17
18
  {
18
- url: polymorphic_path(attachment.variant(
19
- gravity: 'center',
20
- resize: size,
21
- extent: size,
22
- background: 'snow2',
23
- quality: 80
24
- ), only_path: true),
19
+ url: generate_url(size: size),
20
+ size: size,
25
21
  width: width,
26
22
  height: height
27
23
  }
@@ -35,13 +31,7 @@ module Spree
35
31
  width, height = size.chop.split('x')
36
32
 
37
33
  {
38
- url: polymorphic_path(attachment.variant(
39
- gravity: 'center',
40
- resize: size,
41
- extent: size,
42
- background: 'snow2',
43
- quality: 80
44
- ), only_path: true),
34
+ url: generate_url(size: size),
45
35
  size: size,
46
36
  width: width,
47
37
  height: height
@@ -59,16 +49,7 @@ module Spree
59
49
  end
60
50
 
61
51
  def plp_url
62
- size = self.class.styles[:plp_and_carousel]
63
- variant = attachment.variant(
64
- gravity: 'center',
65
- resize: size,
66
- extent: size,
67
- background: 'snow2',
68
- quality: 80
69
- )
70
-
71
- polymorphic_path(variant, only_path: true)
52
+ generate_url(size: self.class.styles[:plp_and_carousel])
72
53
  end
73
54
  end
74
55
  end
@@ -4,6 +4,7 @@ module Spree
4
4
  include UserAddress
5
5
  include UserPaymentSource
6
6
  include UserMethods
7
+ include Spree::Metadata
7
8
 
8
9
  self.table_name = 'spree_users'
9
10
 
@@ -1,5 +1,7 @@
1
1
  module Spree
2
2
  class LineItem < Spree::Base
3
+ include Metadata
4
+
3
5
  before_validation :ensure_valid_quantity
4
6
 
5
7
  with_options inverse_of: :line_items do
@@ -12,6 +14,7 @@ module Spree
12
14
 
13
15
  has_many :adjustments, as: :adjustable, dependent: :destroy
14
16
  has_many :inventory_units, inverse_of: :line_item
17
+ has_many :digital_links, dependent: :destroy
15
18
 
16
19
  before_validation :copy_price
17
20
  before_validation :copy_tax_category
@@ -27,7 +30,7 @@ module Spree
27
30
 
28
31
  validates :price, numericality: true
29
32
 
30
- validates_with Spree::Stock::AvailabilityValidator
33
+ validates_with Spree::Stock::AvailabilityValidator, if: -> { variant.present? }
31
34
  validate :ensure_proper_currency, if: -> { order.present? }
32
35
 
33
36
  before_destroy :verify_order_inventory_before_destroy, if: -> { order.has_checkout_step?('delivery') }
@@ -42,11 +45,16 @@ module Spree
42
45
  delegate :name, :description, :sku, :should_track_inventory?, :product, :options_text, :slug, :product_id, to: :variant
43
46
  delegate :brand, :category, to: :product
44
47
  delegate :tax_zone, to: :order
48
+ delegate :digital?, to: :variant
45
49
 
46
50
  attr_accessor :target_shipment
47
51
 
48
- self.whitelisted_ransackable_associations = ['variant']
49
- self.whitelisted_ransackable_attributes = ['variant_id']
52
+ self.whitelisted_ransackable_associations = %w[variant order tax_category]
53
+ self.whitelisted_ransackable_attributes = %w[variant_id order_id tax_category_id quantity
54
+ price cost_price cost_currency adjustment_total
55
+ additional_tax_total promo_total included_tax_total
56
+ pre_tax_amount taxable_adjustment_total
57
+ non_taxable_adjustment_total]
50
58
 
51
59
  def copy_price
52
60
  if variant
@@ -1,5 +1,8 @@
1
1
  module Spree
2
2
  class OptionType < Spree::Base
3
+ include UniqueName
4
+ include Metadata
5
+
3
6
  acts_as_list
4
7
 
5
8
  with_options dependent: :destroy, inverse_of: :option_type do
@@ -12,10 +15,7 @@ module Spree
12
15
  has_many :option_type_prototypes, class_name: 'Spree::OptionTypePrototype'
13
16
  has_many :prototypes, through: :option_type_prototypes, class_name: 'Spree::Prototype'
14
17
 
15
- with_options presence: true do
16
- validates :name, uniqueness: { case_sensitive: false, allow_blank: true }
17
- validates :presentation
18
- end
18
+ validates :presentation, presence: true
19
19
 
20
20
  default_scope { order(:position) }
21
21
 
@@ -1,5 +1,7 @@
1
1
  module Spree
2
2
  class OptionValue < Spree::Base
3
+ include Metadata
4
+
3
5
  belongs_to :option_type, class_name: 'Spree::OptionType', touch: true, inverse_of: :option_values
4
6
  acts_as_list scope: :option_type
5
7
 
@@ -83,6 +83,11 @@ module Spree
83
83
  order.process_payments!
84
84
  end
85
85
  end
86
+
87
+ before_transition to: :complete do |order|
88
+ order.create_digital_links if order.some_digital?
89
+ end
90
+
86
91
  after_transition to: :complete, do: :persist_user_credit_card
87
92
  before_transition to: :payment, do: :set_shipments_cost
88
93
  before_transition to: :payment, do: :create_tax_charge!
@@ -107,6 +112,7 @@ module Spree
107
112
 
108
113
  before_transition to: :resumed, do: :ensure_line_item_variants_are_not_discontinued
109
114
  before_transition to: :resumed, do: :ensure_line_items_are_in_stock
115
+ before_transition to: :resumed, do: proc { |order| order.state_machine_resumed = true }
110
116
 
111
117
  after_transition to: :complete, do: :finalize!
112
118
  after_transition to: :resumed, do: :after_resume
@@ -220,7 +226,7 @@ module Spree
220
226
  @updating_params = params
221
227
  run_callbacks :updating_from_params do
222
228
  # Set existing card after setting permitted parameters because
223
- # rails would slice parameters containg ruby objects, apparently
229
+ # rails would slice parameters containing ruby objects, apparently
224
230
  existing_card_id = @updating_params[:order] ? @updating_params[:order].delete(:existing_card) : nil
225
231
 
226
232
  attributes = if @updating_params[:order]
@@ -0,0 +1,33 @@
1
+ module Spree
2
+ class Order < Spree::Base
3
+ module Digital
4
+ def digital?
5
+ if line_items.empty?
6
+ false
7
+ else
8
+ line_items.all?(&:digital?)
9
+ end
10
+ end
11
+
12
+ def some_digital?
13
+ line_items.any?(&:digital?)
14
+ end
15
+
16
+ def digital_line_items
17
+ line_items.select(&:digital?)
18
+ end
19
+
20
+ def digital_links
21
+ digital_line_items.map(&:digital_links).flatten
22
+ end
23
+
24
+ def create_digital_links
25
+ digital_line_items.each do |line_item|
26
+ line_item.variant.digitals.each do |digital|
27
+ line_item.digital_links.create!(digital: digital)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,5 +1,6 @@
1
1
  require_dependency 'spree/order/checkout'
2
2
  require_dependency 'spree/order/currency_updater'
3
+ require_dependency 'spree/order/digital'
3
4
  require_dependency 'spree/order/payments'
4
5
  require_dependency 'spree/order/store_credit'
5
6
  require_dependency 'spree/order/emails'
@@ -11,6 +12,7 @@ module Spree
11
12
 
12
13
  include Spree::Order::Checkout
13
14
  include Spree::Order::CurrencyUpdater
15
+ include Spree::Order::Digital
14
16
  include Spree::Order::Payments
15
17
  include Spree::Order::StoreCredit
16
18
  include Spree::Order::AddressBook
@@ -18,9 +20,11 @@ module Spree
18
20
  include Spree::Core::NumberGenerator.new(prefix: 'R')
19
21
  include Spree::Core::TokenGenerator
20
22
 
23
+ include NumberIdentifier
21
24
  include NumberAsParam
22
25
  include SingleStoreResource
23
26
  include MemoizedData
27
+ include Metadata
24
28
 
25
29
  MEMOIZED_METHODS = %w(tax_zone)
26
30
 
@@ -54,26 +58,34 @@ module Spree
54
58
 
55
59
  checkout_flow do
56
60
  go_to_state :address
57
- go_to_state :delivery
61
+ go_to_state :delivery, if: ->(order) { order.delivery_required? }
58
62
  go_to_state :payment, if: ->(order) { order.payment? || order.payment_required? }
59
63
  go_to_state :confirm, if: ->(order) { order.confirmation_required? }
60
64
  go_to_state :complete
61
65
  remove_transition from: :delivery, to: :confirm, unless: ->(order) { order.confirmation_required? }
62
66
  end
63
67
 
64
- self.whitelisted_ransackable_associations = %w[shipments user promotions bill_address ship_address line_items store]
65
- self.whitelisted_ransackable_attributes = %w[completed_at email number state payment_state shipment_state total considered_risky channel]
68
+ self.whitelisted_ransackable_associations = %w[shipments user created_by approver canceler promotions bill_address ship_address line_items store]
69
+ self.whitelisted_ransackable_attributes = %w[
70
+ completed_at email number state payment_state shipment_state
71
+ total item_total considered_risky channel
72
+ ]
66
73
 
67
74
  attr_reader :coupon_code
68
75
  attr_accessor :temporary_address, :temporary_credit_card
69
76
 
77
+ attribute :state_machine_resumed, :boolean
78
+
70
79
  if Spree.user_class
71
80
  belongs_to :user, class_name: Spree.user_class.to_s, optional: true
72
- belongs_to :created_by, class_name: Spree.user_class.to_s, optional: true
73
- belongs_to :approver, class_name: Spree.user_class.to_s, optional: true
74
- belongs_to :canceler, class_name: Spree.user_class.to_s, optional: true
75
81
  else
76
82
  belongs_to :user, optional: true
83
+ end
84
+ if Spree.admin_user_class
85
+ belongs_to :created_by, class_name: Spree.admin_user_class.to_s, optional: true
86
+ belongs_to :approver, class_name: Spree.admin_user_class.to_s, optional: true
87
+ belongs_to :canceler, class_name: Spree.admin_user_class.to_s, optional: true
88
+ else
77
89
  belongs_to :created_by, optional: true
78
90
  belongs_to :approver, optional: true
79
91
  belongs_to :canceler, optional: true
@@ -128,7 +140,6 @@ module Spree
128
140
  # Needs to happen before save_permalink is called
129
141
  before_validation :ensure_store_presence
130
142
  before_validation :ensure_currency_presence
131
- before_validation :uppercase_number
132
143
 
133
144
  before_validation :clone_billing_address, if: :use_billing?
134
145
  attr_accessor :use_billing
@@ -140,7 +151,6 @@ module Spree
140
151
  with_options presence: true do
141
152
  # we want to have this case_sentive: true as changing it to false causes all SQL to use LOWER(slug)
142
153
  # which is very costly and slow on large set of records
143
- validates :number, length: { maximum: 32, allow_blank: true }, uniqueness: { allow_blank: true, case_sensitive: true }
144
154
  validates :email, length: { maximum: 254, allow_blank: true }, email: { allow_blank: true }, if: :require_email
145
155
  validates :item_count, numericality: { greater_than_or_equal_to: 0, less_than: 2**31, only_integer: true, allow_blank: true }
146
156
  validates :store
@@ -181,7 +191,7 @@ module Spree
181
191
  update_hooks.add(hook)
182
192
  end
183
193
 
184
- # For compatiblity with Calculator::PriceSack
194
+ # For compatibility with Calculator::PriceSack
185
195
  def amount
186
196
  line_items.inject(0.0) { |sum, li| sum + li.amount }
187
197
  end
@@ -212,6 +222,11 @@ module Spree
212
222
  line_items.exists?
213
223
  end
214
224
 
225
+ # Does this order require a physical delivery.
226
+ def delivery_required?
227
+ !digital?
228
+ end
229
+
215
230
  # Is this a free order in which case the payment step should be skipped
216
231
  def payment_required?
217
232
  total.to_f > 0.0
@@ -386,7 +401,7 @@ module Spree
386
401
 
387
402
  # Helper methods for checkout steps
388
403
  def paid?
389
- payment_state == 'paid' || payment_state == 'credit_owed'
404
+ payments.valid.completed.size == payments.valid.size && payments.valid.sum(:amount) >= total
390
405
  end
391
406
 
392
407
  def available_payment_methods(store = nil)
@@ -476,6 +491,10 @@ module Spree
476
491
  %w(partial shipped).include?(shipment_state)
477
492
  end
478
493
 
494
+ def fully_shipped?
495
+ shipments.shipped.size == shipments.size
496
+ end
497
+
479
498
  def create_proposed_shipments
480
499
  all_adjustments.shipping.delete_all
481
500
 
@@ -618,17 +637,14 @@ module Spree
618
637
  promotions.pluck(:code).compact.first
619
638
  end
620
639
 
621
- def payments_attributes=(attributes)
622
- validate_payments_attributes(attributes)
623
- super(attributes)
624
- end
625
-
626
640
  def validate_payments_attributes(attributes)
641
+ ActiveSupport::Deprecation.warn('`Order#validate_payments_attributes` is deprecated and will be removed in Spree 5')
642
+
627
643
  # Ensure the payment methods specified are allowed for this user
628
- payment_method_ids = available_payment_methods.map(&:id)
644
+ payment_method_ids = available_payment_methods.map(&:id).map(&:to_s)
629
645
 
630
646
  attributes.each do |payment_attributes|
631
- payment_method_id = payment_attributes[:payment_method_id].to_i
647
+ payment_method_id = payment_attributes[:payment_method_id].to_s
632
648
 
633
649
  raise ActiveRecord::RecordNotFound unless payment_method_ids.include?(payment_method_id)
634
650
  end
@@ -711,7 +727,7 @@ module Spree
711
727
  end
712
728
 
713
729
  def ensure_currency_presence
714
- self.currency ||= store.default_currency || Spree::Config[:currency]
730
+ self.currency ||= store.default_currency
715
731
  end
716
732
 
717
733
  def create_token
@@ -730,9 +746,5 @@ module Spree
730
746
  def credit_card_nil_payment?(attributes)
731
747
  payments.store_credits.present? && attributes[:amount].to_f.zero?
732
748
  end
733
-
734
- def uppercase_number
735
- number&.upcase!
736
- end
737
749
  end
738
750
  end
@@ -120,7 +120,7 @@ module Spree
120
120
  if order.completed?
121
121
  current_on_hand = shipment.stock_location.count_on_hand(variant)
122
122
 
123
- if current_on_hand.negative? && current_on_hand.abs < removed_backordered
123
+ if current_on_hand&.negative? && current_on_hand.abs < removed_backordered
124
124
  shipment.stock_location.restock_backordered variant, current_on_hand.abs, shipment
125
125
  else
126
126
  shipment.stock_location.restock_backordered variant, removed_backordered, shipment
@@ -3,7 +3,7 @@ module Spree
3
3
  belongs_to :order, class_name: 'Spree::Order'
4
4
  belongs_to :promotion, class_name: 'Spree::Promotion'
5
5
 
6
- delegate :name, :description, :code, to: :promotion
6
+ delegate :name, :description, :code, :public_metadata, to: :promotion
7
7
  delegate :currency, to: :order
8
8
 
9
9
  extend Spree::DisplayMoney
@@ -152,6 +152,7 @@ module Spree
152
152
  def protect_from_connection_error
153
153
  yield
154
154
  rescue ActiveMerchant::ConnectionError => e
155
+ failure!
155
156
  gateway_error(e)
156
157
  end
157
158
 
@@ -3,11 +3,12 @@ require_dependency 'spree/payment/processing'
3
3
  module Spree
4
4
  class Payment < Spree::Base
5
5
  include Spree::Core::NumberGenerator.new(prefix: 'P', letters: true, length: 7)
6
+ include NumberIdentifier
7
+ include NumberAsParam
8
+ include Metadata
6
9
 
7
10
  include Spree::Payment::Processing
8
11
 
9
- include NumberAsParam
10
-
11
12
  NON_RISKY_AVS_CODES = ['B', 'D', 'H', 'J', 'M', 'Q', 'T', 'V', 'X', 'Y'].freeze
12
13
  RISKY_AVS_CODES = ['A', 'C', 'E', 'F', 'G', 'I', 'K', 'L', 'N', 'O', 'P', 'R', 'S', 'U', 'W', 'Z'].freeze
13
14
  INVALID_STATES = %w(failed invalid).freeze
@@ -25,8 +26,8 @@ module Spree
25
26
  has_many :refunds, inverse_of: :payment
26
27
 
27
28
  validates :payment_method, presence: true
28
- validates :number, uniqueness: { case_sensitive: true }
29
29
  validates :source, presence: true, if: -> { payment_method&.source_required? }
30
+ validate :payment_method_available_for_order, on: :create
30
31
 
31
32
  before_validation :validate_source
32
33
 
@@ -66,6 +67,9 @@ module Spree
66
67
  scope :store_credits, -> { where(source_type: Spree::StoreCredit.to_s) }
67
68
  scope :not_store_credits, -> { where(arel_table[:source_type].not_eq(Spree::StoreCredit.to_s).or(arel_table[:source_type].eq(nil))) }
68
69
 
70
+ self.whitelisted_ransackable_associations = %w[payment_method order source]
71
+ self.whitelisted_ransackable_attributes = %w[number amount state response_code avs_response cvv_response_code cvv_response_message]
72
+
69
73
  # transaction_id is much easier to understand
70
74
  def transaction_id
71
75
  response_code
@@ -95,10 +99,12 @@ module Spree
95
99
  event :complete do
96
100
  transition from: [:processing, :pending, :checkout], to: :completed
97
101
  end
102
+ after_transition to: :completed, do: :after_completed
98
103
  event :void do
99
104
  transition from: [:pending, :processing, :completed, :checkout], to: :void
100
105
  end
101
- # when the card brand isnt supported
106
+ after_transition to: :void, do: :after_void
107
+ # when the card brand isn't supported
102
108
  event :invalidate do
103
109
  transition from: [:checkout], to: :invalid
104
110
  end
@@ -196,6 +202,14 @@ module Spree
196
202
 
197
203
  private
198
204
 
205
+ def after_void
206
+ # this method is prepended in api/ to queue Webhooks requests
207
+ end
208
+
209
+ def after_completed
210
+ # this method is prepended in api/ to queue Webhooks requests
211
+ end
212
+
199
213
  def has_invalid_state?
200
214
  INVALID_STATES.include?(state)
201
215
  end
@@ -219,6 +233,13 @@ module Spree
219
233
  !errors.present?
220
234
  end
221
235
 
236
+ def payment_method_available_for_order
237
+ return if payment_method.blank?
238
+ return if order.blank?
239
+
240
+ errors.add(:payment_method, :invalid) if !payment_method.available_for_order?(order) || !payment_method.available_for_store?(order.store)
241
+ end
242
+
222
243
  def add_source_error(field, message)
223
244
  field_name = I18n.t("activerecord.attributes.#{source.class.to_s.underscore}.#{field}")
224
245
  errors.add(Spree.t(source.class.to_s.demodulize.underscore), "#{field_name} #{message}")
@@ -4,6 +4,7 @@ module Spree
4
4
  acts_as_list
5
5
 
6
6
  include MultiStoreResource
7
+ include Spree::Metadata
7
8
 
8
9
  DISPLAY = [:both, :front_end, :back_end].freeze
9
10
 
@@ -14,7 +15,8 @@ module Spree
14
15
 
15
16
  validates :name, presence: true
16
17
 
17
- has_and_belongs_to_many :stores
18
+ has_many :store_payment_methods, class_name: 'Spree::StorePaymentMethod'
19
+ has_many :stores, class_name: 'Spree::Store', through: :store_payment_methods
18
20
 
19
21
  with_options dependent: :restrict_with_error do
20
22
  has_many :payments, class_name: 'Spree::Payment', inverse_of: :payment_method
@@ -87,5 +89,17 @@ module Spree
87
89
 
88
90
  store_ids.include?(store.id)
89
91
  end
92
+
93
+ def public_preferences
94
+ public_preference_keys.each_with_object({}) do |key, hash|
95
+ hash[key] = preferences[key]
96
+ end
97
+ end
98
+
99
+ protected
100
+
101
+ def public_preference_keys
102
+ []
103
+ end
90
104
  end
91
105
  end
@@ -1,5 +1,6 @@
1
1
  class Spree::Preference < Spree::Base
2
2
  serialize :value
3
3
 
4
- validates :key, presence: true, uniqueness: { case_sensitive: false, allow_blank: true }
4
+ validates :key, presence: true,
5
+ uniqueness: { case_sensitive: false, allow_blank: true, scope: spree_base_uniqueness_scope }
5
6
  end
@@ -1,5 +1,5 @@
1
- # This takes the preferrable methods and adds some
2
- # syntatic sugar to access the preferences
1
+ # This takes the preferable methods and adds some
2
+ # syntactic sugar to access the preferences
3
3
  #
4
4
  # class App < Configuration
5
5
  # preference :color, :string
@@ -36,7 +36,7 @@ module Spree::Preferences
36
36
 
37
37
  def get(key)
38
38
  # return the retrieved value, if it's in the cache
39
- # use unless nil? incase the value is actually boolean false
39
+ # use unless nil? in case the value is actually boolean false
40
40
  #
41
41
  unless (val = @cache.read(key)).nil?
42
42
  return val
@@ -66,7 +66,7 @@ module Spree
66
66
  private
67
67
 
68
68
  def ensure_currency
69
- self.currency ||= Spree::Config[:currency]
69
+ self.currency ||= Spree::Store.default.default_currency
70
70
  end
71
71
  end
72
72
  end