solidus_core 2.10.0 → 2.11.0

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 (495) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +31 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/mailers/spree/base_mailer.rb +4 -0
  5. data/app/mailers/spree/order_mailer.rb +1 -1
  6. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
  7. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  8. data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
  9. data/app/models/concerns/spree/default_price.rb +1 -1
  10. data/app/models/concerns/spree/soft_deletable.rb +18 -0
  11. data/app/models/concerns/spree/user_address_book.rb +86 -32
  12. data/app/models/concerns/spree/user_methods.rb +3 -2
  13. data/app/models/spree/ability.rb +34 -10
  14. data/app/models/spree/address/name.rb +49 -0
  15. data/app/models/spree/address/state_validator.rb +71 -0
  16. data/app/models/spree/address.rb +94 -17
  17. data/app/models/spree/adjustment.rb +1 -1
  18. data/app/models/spree/base.rb +1 -0
  19. data/app/models/spree/calculator/default_tax.rb +1 -1
  20. data/app/models/spree/calculator/percent_per_item.rb +4 -4
  21. data/app/models/spree/calculator/price_sack.rb +1 -1
  22. data/app/models/spree/credit_card.rb +2 -2
  23. data/app/models/spree/customer_return.rb +4 -2
  24. data/app/models/spree/exchange.rb +1 -1
  25. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  26. data/app/models/spree/inventory_unit.rb +1 -1
  27. data/app/models/spree/line_item.rb +13 -4
  28. data/app/models/spree/option_type.rb +1 -1
  29. data/app/models/spree/option_value.rb +2 -2
  30. data/app/models/spree/order/checkout.rb +1 -0
  31. data/app/models/spree/order.rb +91 -20
  32. data/app/models/spree/order_inventory.rb +16 -4
  33. data/app/models/spree/order_merger.rb +6 -4
  34. data/app/models/spree/order_promotion.rb +1 -1
  35. data/app/models/spree/order_updater.rb +11 -10
  36. data/app/models/spree/payment/cancellation.rb +3 -3
  37. data/app/models/spree/payment/processing.rb +54 -30
  38. data/app/models/spree/payment.rb +3 -3
  39. data/app/models/spree/payment_method.rb +8 -9
  40. data/app/models/spree/preference.rb +1 -1
  41. data/app/models/spree/price.rb +2 -8
  42. data/app/models/spree/product/scopes.rb +10 -5
  43. data/app/models/spree/product.rb +19 -14
  44. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  45. data/app/models/spree/promotion.rb +18 -7
  46. data/app/models/spree/promotion_action.rb +1 -7
  47. data/app/models/spree/promotion_code.rb +6 -1
  48. data/app/models/spree/promotion_code_batch.rb +1 -1
  49. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  50. data/app/models/spree/promotion_rule.rb +1 -1
  51. data/app/models/spree/promotion_rule_role.rb +1 -1
  52. data/app/models/spree/refund.rb +54 -12
  53. data/app/models/spree/reimbursement.rb +27 -0
  54. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
  55. data/app/models/spree/return_authorization.rb +1 -1
  56. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  57. data/app/models/spree/return_item.rb +21 -10
  58. data/app/models/spree/role.rb +1 -1
  59. data/app/models/spree/shipment.rb +2 -2
  60. data/app/models/spree/shipping_calculator.rb +1 -1
  61. data/app/models/spree/shipping_manifest.rb +2 -2
  62. data/app/models/spree/shipping_method.rb +2 -9
  63. data/app/models/spree/shipping_rate.rb +1 -1
  64. data/app/models/spree/shipping_rate_tax.rb +1 -1
  65. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  66. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  67. data/app/models/spree/stock/package.rb +1 -1
  68. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  69. data/app/models/spree/stock_item.rb +2 -8
  70. data/app/models/spree/stock_movement.rb +2 -0
  71. data/app/models/spree/store.rb +1 -1
  72. data/app/models/spree/store_credit.rb +1 -7
  73. data/app/models/spree/store_credit_category.rb +30 -3
  74. data/app/models/spree/store_credit_event.rb +1 -7
  75. data/app/models/spree/store_credit_reason.rb +0 -4
  76. data/app/models/spree/tax/tax_helpers.rb +1 -1
  77. data/app/models/spree/tax_category.rb +2 -8
  78. data/app/models/spree/tax_rate.rb +7 -7
  79. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  80. data/app/models/spree/taxon.rb +1 -1
  81. data/app/models/spree/user_address.rb +8 -2
  82. data/app/models/spree/variant.rb +7 -13
  83. data/app/models/spree/variant_property_rule.rb +5 -1
  84. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  85. data/app/models/spree/zone.rb +1 -1
  86. data/config/locales/en.yml +44 -5
  87. data/db/default/spree/countries.rb +1 -1
  88. data/db/default/spree/states.rb +12 -4
  89. data/db/default/spree/store_credit.rb +2 -2
  90. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  91. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  92. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  93. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  94. data/lib/generators/solidus/install/install_generator.rb +253 -0
  95. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
  96. data/lib/generators/spree/install/install_generator.rb +7 -189
  97. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  98. data/lib/spree/app_configuration.rb +117 -51
  99. data/lib/spree/awesome_nested_set_override.rb +44 -0
  100. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  101. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  102. data/lib/spree/core/controller_helpers/order.rb +8 -7
  103. data/lib/spree/core/controller_helpers/strong_parameters.rb +21 -7
  104. data/lib/spree/core/engine.rb +39 -2
  105. data/lib/spree/core/importer/order.rb +26 -11
  106. data/lib/spree/core/permalinks.rb +1 -3
  107. data/lib/spree/core/product_filters.rb +6 -5
  108. data/lib/spree/core/state_machines/order.rb +249 -0
  109. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  110. data/lib/spree/core/state_machines.rb +20 -1
  111. data/lib/spree/core/version.rb +1 -1
  112. data/lib/spree/core.rb +5 -11
  113. data/lib/spree/encryptor.rb +25 -0
  114. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  115. data/lib/spree/event/configuration.rb +11 -6
  116. data/lib/spree/event/subscriber.rb +38 -18
  117. data/lib/spree/event/subscriber_registry.rb +92 -0
  118. data/lib/spree/event.rb +40 -7
  119. data/lib/spree/i18n.rb +1 -1
  120. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  121. data/lib/spree/paranoia_deprecations.rb +32 -12
  122. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  123. data/lib/spree/permission_sets/default_customer.rb +16 -16
  124. data/lib/spree/permission_sets/order_display.rb +11 -11
  125. data/lib/spree/permission_sets/order_management.rb +1 -1
  126. data/lib/spree/permission_sets/product_display.rb +9 -9
  127. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  128. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  129. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  130. data/lib/spree/permission_sets/stock_display.rb +2 -2
  131. data/lib/spree/permission_sets/stock_management.rb +1 -1
  132. data/lib/spree/permission_sets/user_display.rb +3 -3
  133. data/lib/spree/permission_sets/user_management.rb +4 -3
  134. data/lib/spree/permitted_attributes.rb +79 -9
  135. data/lib/spree/preferences/preferable.rb +4 -3
  136. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  137. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  138. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  139. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  140. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  141. data/lib/spree/testing_support/common_rake.rb +3 -3
  142. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  143. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  144. data/lib/spree/testing_support/dummy_app.rb +44 -23
  145. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  146. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  147. data/lib/spree/testing_support/factories/promotion_factory.rb +6 -0
  148. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  149. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  150. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  151. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  152. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  153. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  154. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  155. data/lib/spree/testing_support/factories/user_factory.rb +4 -1
  156. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  157. data/lib/spree/testing_support/job_helpers.rb +24 -0
  158. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  159. data/lib/spree/testing_support/preferences.rb +3 -1
  160. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  161. data/lib/spree/testing_support/translations.rb +25 -0
  162. data/solidus_core.gemspec +8 -5
  163. metadata +81 -359
  164. data/script/rails +0 -10
  165. data/spec/fixtures/thinking-cat.jpg +0 -0
  166. data/spec/helpers/base_helper_spec.rb +0 -168
  167. data/spec/helpers/products_helper_spec.rb +0 -202
  168. data/spec/helpers/taxons_helper_spec.rb +0 -43
  169. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  170. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  171. data/spec/lib/i18n_spec.rb +0 -97
  172. data/spec/lib/search/base_spec.rb +0 -91
  173. data/spec/lib/search/variant_spec.rb +0 -115
  174. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  175. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  176. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  177. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  178. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  179. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  180. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  181. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  182. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -41
  183. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  184. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  185. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  186. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  187. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  188. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  189. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  190. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  191. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  192. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  193. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  194. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  195. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  196. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  197. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  198. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  199. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  200. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  201. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  202. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  203. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  204. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  205. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  206. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  207. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  208. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  209. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  210. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  211. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  212. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  213. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  214. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  215. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  216. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  217. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  218. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  219. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  220. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  221. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  222. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  223. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  224. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  225. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  226. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  227. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  228. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  229. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  230. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  231. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  232. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  233. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  234. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  235. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  236. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  237. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  238. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  239. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  240. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  241. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  242. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  243. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  244. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  245. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  246. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  247. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  248. data/spec/lib/spree/core/version_spec.rb +0 -19
  249. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  250. data/spec/lib/spree/event_spec.rb +0 -130
  251. data/spec/lib/spree/localized_number_spec.rb +0 -45
  252. data/spec/lib/spree/migrations_spec.rb +0 -32
  253. data/spec/lib/spree/money_spec.rb +0 -298
  254. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  255. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  256. data/spec/lib/tasks/dummy_task.rake +0 -12
  257. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  258. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  259. data/spec/mailers/carton_mailer_spec.rb +0 -44
  260. data/spec/mailers/order_mailer_spec.rb +0 -117
  261. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  262. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  263. data/spec/mailers/test_mailer_spec.rb +0 -13
  264. data/spec/models/spree/ability_spec.rb +0 -279
  265. data/spec/models/spree/address_spec.rb +0 -399
  266. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  267. data/spec/models/spree/adjustment_spec.rb +0 -339
  268. data/spec/models/spree/asset_spec.rb +0 -25
  269. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  270. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  271. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  272. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  273. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  274. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  275. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  276. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  277. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  278. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  279. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  280. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  281. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  282. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  283. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  284. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  285. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  286. data/spec/models/spree/calculator_spec.rb +0 -43
  287. data/spec/models/spree/carton_spec.rb +0 -145
  288. data/spec/models/spree/classification_spec.rb +0 -126
  289. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  290. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  291. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  292. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  293. data/spec/models/spree/country_spec.rb +0 -154
  294. data/spec/models/spree/credit_card_spec.rb +0 -373
  295. data/spec/models/spree/customer_return_spec.rb +0 -294
  296. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  297. data/spec/models/spree/exchange_spec.rb +0 -76
  298. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  299. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  300. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  301. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  302. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  303. data/spec/models/spree/gateway_spec.rb +0 -14
  304. data/spec/models/spree/image_spec.rb +0 -25
  305. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  306. data/spec/models/spree/line_item_spec.rb +0 -240
  307. data/spec/models/spree/option_type_spec.rb +0 -16
  308. data/spec/models/spree/option_value_spec.rb +0 -52
  309. data/spec/models/spree/order/address_spec.rb +0 -52
  310. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  311. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  312. data/spec/models/spree/order/checkout_spec.rb +0 -740
  313. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  314. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  315. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  316. data/spec/models/spree/order/payment_spec.rb +0 -280
  317. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  318. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  319. data/spec/models/spree/order/totals_spec.rb +0 -26
  320. data/spec/models/spree/order/validations_spec.rb +0 -17
  321. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  322. data/spec/models/spree/order_capturing_spec.rb +0 -16
  323. data/spec/models/spree/order_contents_spec.rb +0 -362
  324. data/spec/models/spree/order_inventory_spec.rb +0 -285
  325. data/spec/models/spree/order_merger_spec.rb +0 -162
  326. data/spec/models/spree/order_mutex_spec.rb +0 -89
  327. data/spec/models/spree/order_promotion_spec.rb +0 -33
  328. data/spec/models/spree/order_shipping_spec.rb +0 -247
  329. data/spec/models/spree/order_spec.rb +0 -1687
  330. data/spec/models/spree/order_taxation_spec.rb +0 -128
  331. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  332. data/spec/models/spree/order_updater_spec.rb +0 -556
  333. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  334. data/spec/models/spree/payment_create_spec.rb +0 -195
  335. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  336. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  337. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  338. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  339. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  340. data/spec/models/spree/payment_method_spec.rb +0 -408
  341. data/spec/models/spree/payment_spec.rb +0 -1270
  342. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  343. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  344. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  345. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  346. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  347. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  348. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  349. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  350. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  351. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  352. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  353. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  354. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  355. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  356. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  357. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  358. data/spec/models/spree/preference_spec.rb +0 -79
  359. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  360. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  361. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  362. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  363. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  364. data/spec/models/spree/preferences/store_spec.rb +0 -40
  365. data/spec/models/spree/price_spec.rb +0 -150
  366. data/spec/models/spree/product/scopes_spec.rb +0 -164
  367. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  368. data/spec/models/spree/product_filter_spec.rb +0 -28
  369. data/spec/models/spree/product_property_spec.rb +0 -20
  370. data/spec/models/spree/product_spec.rb +0 -584
  371. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  372. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  373. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  374. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  375. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  376. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  377. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  378. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  379. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  380. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  381. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  382. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  383. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -226
  384. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  385. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  386. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  387. data/spec/models/spree/promotion_action_spec.rb +0 -44
  388. data/spec/models/spree/promotion_category_spec.rb +0 -19
  389. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  390. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  391. data/spec/models/spree/promotion_code_spec.rb +0 -206
  392. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  393. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  394. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  395. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  396. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  397. data/spec/models/spree/promotion_spec.rb +0 -945
  398. data/spec/models/spree/refund_spec.rb +0 -200
  399. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  400. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  401. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  402. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  403. data/spec/models/spree/reimbursement_spec.rb +0 -278
  404. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  405. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  406. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  407. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  408. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  409. data/spec/models/spree/return_authorization_spec.rb +0 -226
  410. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  411. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  412. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  413. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  414. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  415. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  416. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  417. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  418. data/spec/models/spree/return_item_spec.rb +0 -785
  419. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  420. data/spec/models/spree/shipment_spec.rb +0 -914
  421. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  422. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  423. data/spec/models/spree/shipping_method_spec.rb +0 -292
  424. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  425. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  426. data/spec/models/spree/state_spec.rb +0 -43
  427. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  428. data/spec/models/spree/stock/availability_spec.rb +0 -143
  429. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  430. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  431. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  432. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  433. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  434. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  435. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  436. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  437. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  438. data/spec/models/spree/stock/package_spec.rb +0 -182
  439. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  440. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  441. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  442. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  443. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  444. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  445. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  446. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  447. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  448. data/spec/models/spree/stock_item_spec.rb +0 -348
  449. data/spec/models/spree/stock_location_spec.rb +0 -288
  450. data/spec/models/spree/stock_movement_spec.rb +0 -58
  451. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  452. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  453. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  454. data/spec/models/spree/store_credit_spec.rb +0 -900
  455. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  456. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  457. data/spec/models/spree/store_spec.rb +0 -156
  458. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  459. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  460. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  461. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  462. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  463. data/spec/models/spree/tax_category_spec.rb +0 -50
  464. data/spec/models/spree/tax_rate_spec.rb +0 -317
  465. data/spec/models/spree/taxon_spec.rb +0 -197
  466. data/spec/models/spree/taxonomy_spec.rb +0 -15
  467. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  468. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  469. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  470. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  471. data/spec/models/spree/user_spec.rb +0 -247
  472. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  473. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  474. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  475. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  476. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  477. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  478. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  479. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  480. data/spec/models/spree/variant_spec.rb +0 -862
  481. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  482. data/spec/models/spree/wallet_spec.rb +0 -155
  483. data/spec/models/spree/zone_spec.rb +0 -248
  484. data/spec/rails_helper.rb +0 -46
  485. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  486. data/spec/spec_helper.rb +0 -36
  487. data/spec/support/big_decimal.rb +0 -7
  488. data/spec/support/concerns/default_price.rb +0 -44
  489. data/spec/support/concerns/payment_source.rb +0 -66
  490. data/spec/support/concerns/working_factories.rb +0 -15
  491. data/spec/support/dummy_ability.rb +0 -7
  492. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  493. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  494. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  495. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
@@ -34,11 +34,9 @@ module Spree
34
34
  end
35
35
 
36
36
  def unstock_inventory_units
37
- inventory_units.group_by(&:shipment_id).each_value do |inventory_units_for_shipment|
38
- inventory_units_for_shipment.group_by(&:line_item_id).each_value do |units|
39
- shipment = units.first.shipment
40
- line_item = units.first.line_item
41
- shipment.stock_location.unstock line_item.variant, units.count, shipment
37
+ inventory_units.group_by(&:shipment).each do |shipment, units_by_shipment|
38
+ units_by_shipment.group_by(&:variant).each do |variant, units|
39
+ shipment.stock_location.unstock variant, units.count, shipment
42
40
  end
43
41
  end
44
42
  end
@@ -86,7 +86,7 @@ module Spree
86
86
  # counting only those in the given state if it was specified
87
87
  def quantity(state = nil)
88
88
  matched_contents = state.nil? ? contents : contents.select { |content| content.state.to_s == state.to_s }
89
- matched_contents.map(&:quantity).sum
89
+ matched_contents.sum(&:quantity)
90
90
  end
91
91
 
92
92
  # @return [Boolean] true if there are no inventory units in this
@@ -51,9 +51,7 @@ module Spree
51
51
  # Allocate any available on hand inventory and remaining desired inventory from backorders
52
52
  on_hand_packages, backordered_packages, leftover = @allocator.allocate_inventory(@desired)
53
53
 
54
- unless leftover.empty?
55
- raise Spree::Order::InsufficientStock
56
- end
54
+ raise Spree::Order::InsufficientStock.new(items: leftover.quantities) unless leftover.empty?
57
55
 
58
56
  packages = @stock_locations.map do |stock_location|
59
57
  # Combine on_hand and backorders into a single package per-location
@@ -1,17 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'discard'
4
-
5
3
  module Spree
6
4
  class StockItem < Spree::Base
7
- acts_as_paranoid
8
- include Spree::ParanoiaDeprecations
9
-
10
- include Discard::Model
11
- self.discard_column = :deleted_at
5
+ include Spree::SoftDeletable
12
6
 
13
7
  belongs_to :stock_location, class_name: 'Spree::StockLocation', inverse_of: :stock_items, optional: true
14
- belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant', inverse_of: :stock_items, optional: true
8
+ belongs_to :variant, -> { with_discarded }, class_name: 'Spree::Variant', inverse_of: :stock_items, optional: true
15
9
  has_many :stock_movements, inverse_of: :stock_item
16
10
 
17
11
  validates :stock_location, :variant, presence: true
@@ -4,6 +4,7 @@ module Spree
4
4
  class StockMovement < Spree::Base
5
5
  belongs_to :stock_item, class_name: 'Spree::StockItem', inverse_of: :stock_movements, optional: true
6
6
  belongs_to :originator, polymorphic: true, optional: true
7
+ has_one :variant, through: :stock_item
7
8
 
8
9
  after_create :update_stock_item_quantity
9
10
 
@@ -12,6 +13,7 @@ module Spree
12
13
 
13
14
  scope :recent, -> { order(created_at: :desc) }
14
15
 
16
+ self.whitelisted_ransackable_associations = %w[variant]
15
17
  self.whitelisted_ransackable_attributes = ['quantity']
16
18
 
17
19
  def readonly?
@@ -17,7 +17,7 @@ module Spree
17
17
 
18
18
  has_many :orders, class_name: "Spree::Order"
19
19
 
20
- validates :code, presence: true, uniqueness: { allow_blank: true }
20
+ validates :code, presence: true, uniqueness: { allow_blank: true, case_sensitive: true }
21
21
  validates :name, presence: true
22
22
  validates :url, presence: true
23
23
  validates :mail_from_address, presence: true
@@ -1,13 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'discard'
4
-
5
3
  class Spree::StoreCredit < Spree::PaymentSource
6
- acts_as_paranoid
7
- include Spree::ParanoiaDeprecations
8
-
9
- include Discard::Model
10
- self.discard_column = :deleted_at
4
+ include Spree::SoftDeletable
11
5
 
12
6
  VOID_ACTION = 'void'
13
7
  CREDIT_ACTION = 'credit'
@@ -1,18 +1,45 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Spree::StoreCreditCategory < Spree::Base
4
+ GIFT_CARD = 'Gift Card'
5
+ REIMBURSEMENT = 'Reimbursement'
6
+
4
7
  class_attribute :non_expiring_credit_types
5
8
  self.non_expiring_credit_types = [Spree::StoreCreditType::NON_EXPIRING]
6
9
 
10
+ # @deprecated
7
11
  class_attribute :reimbursement_category_name
8
12
  self.reimbursement_category_name = I18n.t('spree.store_credit_category.default')
9
13
 
10
- def self.reimbursement_category(_reimbursement)
11
- Spree::StoreCreditCategory.find_by(name: reimbursement_category_name) ||
12
- Spree::StoreCreditCategory.first
14
+ # @deprecated
15
+ def self.reimbursement_category(reimbursement)
16
+ reimbursement.store_credit_category
13
17
  end
14
18
 
15
19
  def non_expiring?
16
20
  self.class.non_expiring_credit_types.include? name
17
21
  end
22
+
23
+ public_instance_methods.grep(/^reimbursement_category_name/).each do |method|
24
+ deprecate(
25
+ method => 'Use Spree::Reimbursement#store_credit_category.name instead',
26
+ deprecator: Spree::Deprecation
27
+ )
28
+ end
29
+
30
+ class << self
31
+ public_instance_methods.grep(/^reimbursement_category_name/).each do |method|
32
+ deprecate(
33
+ method => 'Use Spree::Reimbursement.store_credit_category.name instead',
34
+ deprecator: Spree::Deprecation
35
+ )
36
+ end
37
+
38
+ public_instance_methods.grep(/^reimbursement_category$/).each do |method|
39
+ deprecate(
40
+ method => 'Use Spree::Reimbursement.store_credit_category instead',
41
+ deprecator: Spree::Deprecation
42
+ )
43
+ end
44
+ end
18
45
  end
@@ -1,14 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'discard'
4
-
5
3
  module Spree
6
4
  class StoreCreditEvent < Spree::Base
7
- acts_as_paranoid
8
- include Spree::ParanoiaDeprecations
9
-
10
- include Discard::Model
11
- self.discard_column = :deleted_at
5
+ include Spree::SoftDeletable
12
6
 
13
7
  belongs_to :store_credit, optional: true
14
8
  belongs_to :originator, polymorphic: true, optional: true
@@ -4,8 +4,4 @@ class Spree::StoreCreditReason < Spree::Base
4
4
  include Spree::NamedType
5
5
 
6
6
  has_many :store_credit_events, inverse_of: :store_credit_reason
7
-
8
- validates :name, presence: true, uniqueness: { case_sensitive: false, allow_blank: true }
9
-
10
- scope :active, -> { where(active: true) }
11
7
  end
@@ -9,7 +9,7 @@ module Spree
9
9
  @rates_for_order ||= Spree::TaxRate.for_address(item.order.tax_address)
10
10
 
11
11
  @rates_for_order.select do |rate|
12
- rate.tax_categories.map(&:id).include?(item.tax_category_id)
12
+ rate.active? && rate.tax_categories.map(&:id).include?(item.tax_category_id)
13
13
  end
14
14
  end
15
15
  end
@@ -1,21 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'discard'
4
-
5
3
  module Spree
6
4
  class TaxCategory < Spree::Base
7
- acts_as_paranoid
8
- include Spree::ParanoiaDeprecations
9
-
10
- include Discard::Model
11
- self.discard_column = :deleted_at
5
+ include Spree::SoftDeletable
12
6
 
13
7
  after_discard do
14
8
  self.tax_rate_tax_categories = []
15
9
  end
16
10
 
17
11
  validates :name, presence: true
18
- validates_uniqueness_of :name, unless: :deleted_at
12
+ validates_uniqueness_of :name, case_sensitive: true, unless: :deleted_at
19
13
 
20
14
  has_many :tax_rate_tax_categories,
21
15
  class_name: 'Spree::TaxRateTaxCategory',
@@ -1,14 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'discard'
4
-
5
3
  module Spree
6
4
  class TaxRate < Spree::Base
7
- acts_as_paranoid
8
- include Spree::ParanoiaDeprecations
9
-
10
- include Discard::Model
11
- self.discard_column = :deleted_at
5
+ include Spree::SoftDeletable
12
6
 
13
7
  # Need to deal with adjustments before calculator is destroyed.
14
8
  before_destroy :remove_adjustments_from_incomplete_orders
@@ -37,6 +31,12 @@ module Spree
37
31
  scope :for_address, ->(address) { joins(:zone).merge(Spree::Zone.for_address(address)) }
38
32
  scope :for_country,
39
33
  ->(country) { for_address(Spree::Tax::TaxLocation.new(country: country)) }
34
+ scope :active, -> do
35
+ table = arel_table
36
+ time = Time.current
37
+ where(table[:starts_at].eq(nil).or(table[:starts_at].lt(time))).
38
+ where(table[:expires_at].eq(nil).or(table[:expires_at].gt(time)))
39
+ end
40
40
 
41
41
  # Finds geographically matching tax rates for a tax zone.
42
42
  # We do not know if they are/aren't applicable until we attempt to apply these rates to
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree::Taxon::ActiveStorageAttachment
4
+ extend ActiveSupport::Concern
5
+ include Spree::ActiveStorageAdapter
6
+
7
+ included do
8
+ has_attachment :icon,
9
+ styles: { mini: '32x32>', normal: '128x128>' },
10
+ default_style: :mini
11
+ validate :icon_is_an_image
12
+
13
+
14
+ end
15
+
16
+ def attachment_partial_name
17
+ 'paperclip'
18
+ end
19
+ end
@@ -134,7 +134,7 @@ module Spree
134
134
 
135
135
  def touch_ancestors_and_taxonomy
136
136
  # Touches all ancestors at once to avoid recursive taxonomy touch, and reduce queries.
137
- self.class.where(id: ancestors.pluck(:id)).update_all(updated_at: Time.current)
137
+ self.class.default_scoped.where(id: ancestors.pluck(:id)).update_all(updated_at: Time.current)
138
138
  # Have taxonomy touch happen in #touch_ancestors_and_taxonomy rather than association option in order for imports to override.
139
139
  taxonomy.try!(:touch)
140
140
  end
@@ -6,7 +6,7 @@ module Spree
6
6
  belongs_to :address, class_name: "Spree::Address", optional: true
7
7
 
8
8
  validates_uniqueness_of :address_id, scope: :user_id
9
- validates_uniqueness_of :user_id, conditions: -> { active.default }, message: :default_address_exists, if: :default?
9
+ validates_uniqueness_of :user_id, conditions: -> { active.default_shipping }, message: :default_address_exists, if: :default?
10
10
 
11
11
  scope :with_address_values, ->(address_attributes) do
12
12
  joins(:address).merge(
@@ -15,9 +15,15 @@ module Spree
15
15
  end
16
16
 
17
17
  scope :all_historical, -> { unscope(where: :archived) }
18
- scope :default, -> { where(default: true) }
18
+ scope :default_shipping, -> { where(default: true) }
19
+ scope :default_billing, -> { where(default_billing: true) }
19
20
  scope :active, -> { where(archived: false) }
20
21
 
22
+ scope :default, -> do
23
+ Spree::Deprecation.warn "This scope is deprecated. Please start using ::default_shipping."
24
+ default_shipping
25
+ end
26
+
21
27
  default_scope -> { order([default: :desc, updated_at: :desc]) }
22
28
  end
23
29
  end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'discard'
4
-
5
3
  module Spree
6
4
  # == Master Variant
7
5
  #
@@ -20,11 +18,7 @@ module Spree
20
18
  class Variant < Spree::Base
21
19
  acts_as_list scope: :product
22
20
 
23
- acts_as_paranoid
24
- include Spree::ParanoiaDeprecations
25
-
26
- include Discard::Model
27
- self.discard_column = :deleted_at
21
+ include Spree::SoftDeletable
28
22
 
29
23
  after_discard do
30
24
  stock_items.discard_all
@@ -36,11 +30,11 @@ module Spree
36
30
  attr_writer :rebuild_vat_prices
37
31
  include Spree::DefaultPrice
38
32
 
39
- belongs_to :product, -> { with_deleted }, touch: true, class_name: 'Spree::Product', inverse_of: :variants, optional: false
33
+ belongs_to :product, -> { with_discarded }, touch: true, class_name: 'Spree::Product', inverse_of: :variants, optional: false
40
34
  belongs_to :tax_category, class_name: 'Spree::TaxCategory', optional: true
41
35
 
42
- delegate :name, :description, :slug, :available_on, :shipping_category_id,
43
- :meta_description, :meta_keywords, :shipping_category,
36
+ delegate :name, :description, :slug, :available_on, :discontinue_on, :discontinued?,
37
+ :shipping_category_id, :meta_description, :meta_keywords, :shipping_category,
44
38
  to: :product
45
39
  delegate :tax_category, to: :product, prefix: true
46
40
  delegate :tax_rates, to: :tax_category
@@ -80,7 +74,7 @@ module Spree
80
74
 
81
75
  validates :cost_price, numericality: { greater_than_or_equal_to: 0, allow_nil: true }
82
76
  validates :price, numericality: { greater_than_or_equal_to: 0, allow_nil: true }
83
- validates_uniqueness_of :sku, allow_blank: true, if: :enforce_unique_sku?
77
+ validates_uniqueness_of :sku, allow_blank: true, case_sensitive: true, if: :enforce_unique_sku?
84
78
 
85
79
  after_create :create_stock_items
86
80
  after_create :set_position
@@ -391,9 +385,9 @@ module Spree
391
385
  #
392
386
  # @return [Array<Spree::VariantPropertyRuleValue>] variant_properties
393
387
  def variant_properties
394
- product.variant_property_rules.map do |rule|
388
+ product.variant_property_rules.flat_map do |rule|
395
389
  rule.values if rule.applies_to_variant?(self)
396
- end.flatten.compact
390
+ end.compact
397
391
  end
398
392
 
399
393
  # The gallery for the variant, which represents all the images
@@ -38,7 +38,11 @@ module Spree
38
38
  # @param variant [Spree::Variant] variant to check
39
39
  # @return [Boolean]
40
40
  def applies_to_variant?(variant)
41
- (option_value_ids & variant.option_value_ids).present?
41
+ if apply_to_all
42
+ matches_option_value_ids?(variant.option_value_ids)
43
+ else
44
+ (option_value_ids & variant.option_value_ids).present?
45
+ end
42
46
  end
43
47
  end
44
48
  end
@@ -24,16 +24,21 @@ class Spree::Wallet::AddPaymentSourcesToWallet
24
24
  # add valid sources to wallet and optionally set a default
25
25
  if sources.any?
26
26
  # arbitrarily sort by id for picking a default
27
- wallet_payment_sources = sources.sort_by(&:id).map do |source|
27
+ sources.sort_by(&:id).each do |source|
28
28
  order.user.wallet.add(source)
29
29
  end
30
30
 
31
- order.user.wallet.default_wallet_payment_source =
32
- wallet_payment_sources.last
31
+ make_default
33
32
  end
34
33
  end
35
34
  end
36
35
 
36
+ protected
37
+
38
+ def make_default
39
+ order.user.wallet.default_wallet_payment_source = order.user.wallet_payment_sources.last
40
+ end
41
+
37
42
  private
38
43
 
39
44
  attr_reader :order
@@ -13,7 +13,7 @@ module Spree
13
13
  has_many :shipping_method_zones, dependent: :destroy
14
14
  has_many :shipping_methods, through: :shipping_method_zones
15
15
 
16
- validates :name, presence: true, uniqueness: { allow_blank: true }
16
+ validates :name, presence: true, uniqueness: { allow_blank: true, case_sensitive: true }
17
17
  after_save :remove_defunct_members
18
18
 
19
19
  scope :with_member_ids, ->(state_ids, country_ids) do
@@ -28,6 +28,7 @@ en:
28
28
  company: Company
29
29
  firstname: First Name
30
30
  lastname: Last Name
31
+ name: Name
31
32
  phone: Phone
32
33
  zipcode: Zip Code
33
34
  spree/adjustment:
@@ -115,7 +116,7 @@ en:
115
116
  considered_risky: Risky
116
117
  coupon_code: Coupon Code
117
118
  created_at: Order Date
118
- email: Customer E-Mail
119
+ email: Customer Email
119
120
  included_tax_total: Tax (incl.)
120
121
  ip_address: IP Address
121
122
  item_total: Item Total
@@ -131,6 +132,7 @@ en:
131
132
  city: Billing address city
132
133
  firstname: Billing address first name
133
134
  lastname: Billing address last name
135
+ name: Billing address name
134
136
  phone: Billing address phone
135
137
  state: Billing address state
136
138
  zipcode: Billing address zipcode
@@ -139,6 +141,7 @@ en:
139
141
  city: Shipping address city
140
142
  firstname: Shipping address first name
141
143
  lastname: Shipping address last name
144
+ name: Shipping address name
142
145
  phone: Shipping address phone
143
146
  state: Shipping address state
144
147
  zipcode: Shipping address zipcode
@@ -174,6 +177,7 @@ en:
174
177
  cost_price: Cost Price
175
178
  depth: Depth
176
179
  description: Description
180
+ discontinue_on: Discontinue on
177
181
  height: Height
178
182
  master_price: Master Price
179
183
  meta_description: Meta Description
@@ -316,6 +320,8 @@ en:
316
320
  name: Name
317
321
  service_level: Service Level
318
322
  tracking_url: Tracking URL
323
+ stock_locations: Stock Locations
324
+ available_to_all: Available to all stock locations
319
325
  spree/shipping_rate:
320
326
  amount: Amount
321
327
  label: Label
@@ -356,6 +362,7 @@ en:
356
362
  default: Default
357
363
  default_currency: Default Currency
358
364
  mail_from_address: Mail From Address
365
+ bcc_email: BCC Email
359
366
  meta_description: Meta Description
360
367
  meta_keywords: Meta Keywords
361
368
  name: Site Name
@@ -468,6 +475,7 @@ en:
468
475
  attributes:
469
476
  price:
470
477
  not_a_number: is not valid
478
+ does_not_match_order_currency: Line item price currency must match order currency!
471
479
  spree/price:
472
480
  attributes:
473
481
  currency:
@@ -475,8 +483,11 @@ en:
475
483
  spree/promotion:
476
484
  attributes:
477
485
  apply_automatically:
478
- disallowed_with_code: Disallowed for promotions with a code
479
486
  disallowed_with_path: Disallowed for promotions with a path
487
+ spree/promotion_code:
488
+ attributes:
489
+ base:
490
+ disallowed_with_apply_automatically: Could not create promotion code on promotion that apply automatically
480
491
  spree/refund:
481
492
  attributes:
482
493
  amount:
@@ -688,7 +699,7 @@ en:
688
699
  one: RMA Reason
689
700
  other: RMA Reasons
690
701
  spree/role:
691
- one: Roles
702
+ one: Role
692
703
  other: Roles
693
704
  spree/shipment:
694
705
  one: Shipment
@@ -783,6 +794,7 @@ en:
783
794
  refund: Refund
784
795
  remove: Remove
785
796
  save: Save
797
+ send_email: Send Email
786
798
  ship: Ship
787
799
  split: Split
788
800
  update: Update
@@ -799,6 +811,8 @@ en:
799
811
  add_option_value: Add Option Value
800
812
  add_product: Add Product
801
813
  add_product_properties: Add Product Properties
814
+ add_variant_properties: Add Variant Properties
815
+ applies_to_all_variant_properties: Applies to all Variant Properties above
802
816
  add_rule_of_type: Add rule of type
803
817
  add_state: Add State
804
818
  add_stock: Add Stock
@@ -840,6 +854,11 @@ en:
840
854
  drag_and_drop: or drag and drop them here
841
855
  image_process_failed: Server failed to process the image
842
856
  upload_images: Upload Images
857
+ order:
858
+ events:
859
+ approve: Approve
860
+ cancel: Cancel
861
+ resume: Resume
843
862
  payments:
844
863
  source_forms:
845
864
  storecredit:
@@ -876,6 +895,9 @@ en:
876
895
  expired: Expired
877
896
  inactive: Inactive
878
897
  not_started: Not started
898
+ shipping_methods:
899
+ form:
900
+ stock_locations_placeholder: 'Choose stock locations'
879
901
  stock_locations:
880
902
  form:
881
903
  address: Address
@@ -1391,17 +1413,25 @@ en:
1391
1413
  available_on: This sets the availability date for the product. If this value
1392
1414
  is not set, or it is set to a date in the future, then the product is not
1393
1415
  available on the storefront.
1416
+ discontinue_on: This sets the discontinue date for the product. If this value
1417
+ is set to a date, then the product is not available on the storefront from
1418
+ that day on anymore.
1394
1419
  promotionable: 'This determines whether or not promotions can apply to this
1395
1420
  product.<br/>Default: Checked'
1396
1421
  shipping_category: 'This determines what kind of shipping this product requires.<br/>
1397
1422
  Default: Default'
1398
1423
  tax_category: 'This determines what kind of taxation is applied to this product.<br/>
1399
- Default: None'
1424
+ Default: %{default_tax_category}'
1400
1425
  spree/promotion:
1401
1426
  expires_at: This determines when the promotion expires. <br/> If no value
1402
1427
  is specified, the promotion will never expire.
1403
1428
  starts_at: This determines when the promotion can be applied to orders. <br/>
1404
1429
  If no value is specified, the promotion will be immediately available.
1430
+ promo_code_will_be_disabled: Selecting this option, promo codes will be disabled for this promotion
1431
+ because all its rules / actions will be applied automatically to all orders.
1432
+ spree/shipping_method:
1433
+ available_to_all: Uncheck to select specific stock locations this
1434
+ shipping method will be available in.
1405
1435
  spree/stock_location:
1406
1436
  active: 'This determines whether stock from this location can be used when
1407
1437
  building packages.<br/> Default: Checked'
@@ -1423,6 +1453,8 @@ en:
1423
1453
  (orders which don't yet have an address).<br/> Default: None."
1424
1454
  code: 'An identifier for your store. Developers may need this value if you operate
1425
1455
  multiple storefronts.'
1456
+ spree/tax_category:
1457
+ is_default: 'When checked, this tax category will be selected by default when creating new products or variants.'
1426
1458
  spree/tax_rate:
1427
1459
  validity_period: This determines the validity period within which the tax
1428
1460
  rate is valid and will be applied to eligible items. <br /> If no start
@@ -1496,6 +1528,11 @@ en:
1496
1528
  iso_name: Iso Name
1497
1529
  item: Item
1498
1530
  item_description: Item Description
1531
+ items_selected:
1532
+ all: All Items Selected
1533
+ none: No Item Selected
1534
+ one: One Item Selected
1535
+ custom: Items Selected
1499
1536
  item_total: Item Total
1500
1537
  item_total_rule:
1501
1538
  operators:
@@ -1566,6 +1603,7 @@ en:
1566
1603
  my_account: My Account
1567
1604
  my_orders: My Orders
1568
1605
  name: Name
1606
+ name_contains: Name Contains
1569
1607
  name_on_card: Name on card
1570
1608
  name_or_sku: Name or SKU (enter at least first 4 characters of product name)
1571
1609
  negative_movement_absent_item: Cannot create negative movement for absent stock
@@ -1957,7 +1995,7 @@ en:
1957
1995
  select_a_stock_location: Select a stock location
1958
1996
  selected_quantity_not_available: selected of %{item} is not available.
1959
1997
  send_copy_of_all_mails_to: Send Copy of All Mails To
1960
- send_mailer: Send Mailer
1998
+ send_mailer: Send Shipment Email
1961
1999
  send_mails_as: Send Mails As
1962
2000
  server: Server
1963
2001
  server_error: The server returned an error
@@ -1965,6 +2003,7 @@ en:
1965
2003
  ship: ship
1966
2004
  ship_address: Ship Address
1967
2005
  ship_address_required: Valid shipping address required
2006
+ bill_address_required: Valid billing address required
1968
2007
  ship_total: Ship Total
1969
2008
  shipment: Shipment
1970
2009
  shipment_adjustments: Shipment adjustments
@@ -5,7 +5,7 @@ require 'carmen'
5
5
  # Insert Countries into the spree_countries table, checking to ensure that no
6
6
  # duplicates are created, using as few SQL statements as possible (2)
7
7
 
8
- connection = ApplicationRecord.connection
8
+ connection = Spree::Base.connection
9
9
 
10
10
  country_mapper = ->(country) do
11
11
  name = connection.quote country.name
@@ -1,14 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ def create_states(subregions, country)
4
+ subregions.each do |subregion|
5
+ Spree::State.where(abbr: subregion.code, country: country).first_or_create!(
6
+ name: subregion.name
7
+ )
8
+ end
9
+ end
10
+
3
11
  ActiveRecord::Base.transaction do
4
12
  Spree::Country.all.each do |country|
5
13
  carmen_country = Carmen::Country.coded(country.iso)
6
14
  next unless carmen_country.subregions?
7
15
 
8
- carmen_country.subregions.each do |subregion|
9
- Spree::State.where(abbr: subregion.code, country: country).first_or_create!(
10
- name: subregion.name
11
- )
16
+ if Spree::Config[:countries_that_use_nested_subregions].include? country.iso
17
+ create_states(carmen_country.subregions.flat_map(&:subregions), country)
18
+ else
19
+ create_states(carmen_country.subregions, country)
12
20
  end
13
21
  end
14
22
  end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Spree::StoreCreditCategory.find_or_create_by!(name: I18n.t('spree.store_credit_category.default'))
4
3
 
5
4
  Spree::PaymentMethod.create_with(
6
5
  name: "Store Credit",
@@ -18,6 +17,7 @@ Spree::StoreCreditType.create_with(priority: 2).find_or_create_by!(name: Spree::
18
17
  Spree::ReimbursementType.create_with(name: "Store Credit").find_or_create_by!(type: 'Spree::ReimbursementType::StoreCredit')
19
18
  Spree::ReimbursementType.create_with(name: "Original").find_or_create_by!(type: 'Spree::ReimbursementType::OriginalPayment')
20
19
 
21
- Spree::StoreCreditCategory.find_or_create_by!(name: 'Gift Card')
20
+ Spree::StoreCreditCategory.find_or_create_by!(name: Spree::StoreCreditCategory::GIFT_CARD)
21
+ Spree::StoreCreditCategory.find_or_create_by!(name: Spree::StoreCreditCategory::REIMBURSEMENT)
22
22
 
23
23
  Spree::StoreCreditReason.find_or_create_by!(name: 'Credit Given In Error')
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddApplyToAllToVariantPropertyRule < ActiveRecord::Migration[5.1]
4
+ def change
5
+ add_column :spree_variant_property_rules, :apply_to_all, :boolean, default: false, null: false
6
+ change_column :spree_variant_property_rules, :apply_to_all, :boolean, default: true
7
+ end
8
+
9
+ def down
10
+ remove_column :spree_variant_property_rules, :apply_to_all
11
+ end
12
+ end