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
@@ -24,12 +24,20 @@ require 'spree/core/environment'
24
24
 
25
25
  module Spree
26
26
  class AppConfiguration < Preferences::Configuration
27
- # Alphabetized to more easily lookup particular preferences
27
+ # Preferences (alphabetized to more easily lookup particular preferences)
28
+
29
+ # @!attribute [rw] address_requires_phone
30
+ # @return [Boolean] should phone number be required (default: +true+)
31
+ preference :address_requires_phone, :boolean, default: true
28
32
 
29
33
  # @!attribute [rw] address_requires_state
30
34
  # @return [Boolean] should state/state_name be required (default: +true+)
31
35
  preference :address_requires_state, :boolean, default: true
32
36
 
37
+ # @!attribute [rw] legacy
38
+ # @return [Boolean] use the legacy address' state validation logic (default: +true+)
39
+ preference :use_legacy_address_state_validator, :boolean, default: true
40
+
33
41
  # @!attribute [rw] admin_interface_logo
34
42
  # @return [String] URL of logo used in admin (default: +'logo/solidus.svg'+)
35
43
  preference :admin_interface_logo, :string, default: 'logo/solidus.svg'
@@ -42,6 +50,12 @@ module Spree
42
50
  # @return [Integer] Number of variants to display in admin (default: +20+)
43
51
  preference :admin_variants_per_page, :integer, default: 20
44
52
 
53
+ # @!attribute [rw] admin_vat_country_iso
54
+ # Set this if you want to enter prices in the backend including value added tax.
55
+ # @return [String, nil] Two-letter ISO code of that {Spree::Country} for which
56
+ # prices are entered in the backend (default: nil)
57
+ preference :admin_vat_country_iso, :string, default: nil
58
+
45
59
  # @!attribute [rw] allow_checkout_on_gateway_error
46
60
  # @return [Boolean] Allow checkout to complete after a failed payment (default: +false+)
47
61
  preference :allow_checkout_on_gateway_error, :boolean, default: false
@@ -50,6 +64,10 @@ module Spree
50
64
  # @return [Boolean] When false, customers must create an account to complete an order (default: +true+)
51
65
  preference :allow_guest_checkout, :boolean, default: true
52
66
 
67
+ # @!attribute [rw] guest_token_cookie_options
68
+ # @return [Hash] Add additional guest_token cookie options here (ie. domain or path)
69
+ preference :guest_token_cookie_options, :hash, default: {}
70
+
53
71
  # @!attribute [rw] allow_return_item_amount_editing
54
72
  # @return [Boolean] Determines whether an admin is allowed to change a return item's pre-calculated amount (default: +false+)
55
73
  preference :allow_return_item_amount_editing, :boolean, default: false
@@ -78,6 +96,21 @@ module Spree
78
96
  # @return [Boolean] Automatically capture the credit card (as opposed to just authorize and capture later) (default: +false+)
79
97
  preference :auto_capture_exchanges, :boolean, default: false
80
98
 
99
+ # @!attribute [rw] automatic_default_address
100
+ # The default value of true preserves existing backwards compatible feature of
101
+ # treating the most recently used address in checkout as the user's default address.
102
+ # Setting to false means that the user should manage their own default via some
103
+ # custom UI that uses AddressBookController.
104
+ # @return [Boolean] Whether use of an address in checkout marks it as user's default
105
+ preference :automatic_default_address, :boolean, default: true
106
+
107
+ # @!attribute [rw] billing_address_required
108
+ # Controls whether billing address is required or not in the checkout process
109
+ # by default, can be overridden at order level.
110
+ # (default: +false+)
111
+ # @return [Boolean]
112
+ preference :billing_address_required, :boolean, default: false
113
+
81
114
  # @!attribute [rw] binary_inventory_cache
82
115
  # Only invalidate product caches when they change from in stock to out of
83
116
  # stock. By default, caches are invalidated on any change of inventory
@@ -88,20 +121,9 @@ module Spree
88
121
  # @return [Boolean]
89
122
  preference :binary_inventory_cache, :boolean, default: false
90
123
 
91
- # @!attribute [rw] completable_order_created_cutoff
92
- # @return [Integer] the number of days to look back for created orders which get returned to the user as last completed
93
- preference :completable_order_created_cutoff_days, :integer, default: nil
94
-
95
- # @!attribute [rw] completable_order_created_cutoff
96
- # @return [Integer] the number of days to look back for updated orders which get returned to the user as last completed
97
- preference :completable_order_updated_cutoff_days, :integer, default: nil
98
-
99
- # @!attribute [rw] inventory_cache_threshold
100
- # Only invalidate product caches when the count on hand for a stock item
101
- # falls below or rises about the inventory_cache_threshold. When undefined, the
102
- # product caches will be invalidated anytime the count on hand is changed.
103
- # @return [Integer]
104
- preference :inventory_cache_threshold, :integer
124
+ # @!attribute [rw] can_restrict_stock_management
125
+ # @return [Boolean] Indicates if stock management can be restricted by location
126
+ preference :can_restrict_stock_management, :boolean, default: false
105
127
 
106
128
  # @!attribute [rw] checkout_zone
107
129
  # @return [String] Name of a {Spree::Zone}, which limits available countries to those included in that zone. (default: +nil+)
@@ -111,11 +133,27 @@ module Spree
111
133
  # @return [Boolean] Request company field for billing and shipping addresses. (default: +false+)
112
134
  preference :company, :boolean, default: false
113
135
 
136
+ # @!attribute [rw] completable_order_created_cutoff
137
+ # @return [Integer] the number of days to look back for created orders which get returned to the user as last completed
138
+ preference :completable_order_created_cutoff_days, :integer, default: nil
139
+
140
+ # @!attribute [rw] completable_order_created_cutoff
141
+ # @return [Integer] the number of days to look back for updated orders which get returned to the user as last completed
142
+ preference :completable_order_updated_cutoff_days, :integer, default: nil
143
+
144
+ # @!attribute [rw] credit_to_new_allocation
145
+ # @return [Boolean] Creates a new allocation anytime {Spree::StoreCredit#credit} is called
146
+ preference :credit_to_new_allocation, :boolean, default: false
147
+
114
148
  # @!attribute [rw] currency
115
149
  # Currency to use by default when not defined on the site (default: +"USD"+)
116
150
  # @return [String] ISO 4217 Three letter currency code
117
151
  preference :currency, :string, default: "USD"
118
152
 
153
+ # @!attribute [rw] customer_returns_per_page
154
+ # @return [Integer] Customer returns to show per-page in the admin (default: +15+)
155
+ preference :customer_returns_per_page, :integer, default: 15
156
+
119
157
  # @!attribute [rw] default_country_id
120
158
  # @deprecated Use the default country ISO preference instead
121
159
  # @return [Integer,nil] id of {Spree::Country} to be selected by default in dropdowns (default: nil)
@@ -126,17 +164,22 @@ module Spree
126
164
  # @return [String] Two-letter ISO code of a {Spree::Country} to assumed as the country of an unidentified customer (default: "US")
127
165
  preference :default_country_iso, :string, default: 'US'
128
166
 
129
- # @!attribute [rw] admin_vat_country_iso
130
- # Set this if you want to enter prices in the backend including value added tax.
131
- # @return [String, nil] Two-letter ISO code of that {Spree::Country} for which
132
- # prices are entered in the backend (default: nil)
133
- preference :admin_vat_country_iso, :string, default: nil
167
+ # @!attribute [rw] use_custom_cancancan_actions
168
+ # @return [Boolean] Allow to use legacy Solidus custom CanCanCan action aliases (default: +true+)
169
+ preference :use_custom_cancancan_actions, :boolean, default: true
134
170
 
135
171
  # @!attribute [rw] generate_api_key_for_all_roles
136
172
  # @return [Boolean] Allow generating api key automatically for user
137
173
  # at role_user creation for all roles. (default: +false+)
138
174
  preference :generate_api_key_for_all_roles, :boolean, default: false
139
175
 
176
+ # @!attribute [rw] inventory_cache_threshold
177
+ # Only invalidate product caches when the count on hand for a stock item
178
+ # falls below or rises about the inventory_cache_threshold. When undefined, the
179
+ # product caches will be invalidated anytime the count on hand is changed.
180
+ # @return [Integer]
181
+ preference :inventory_cache_threshold, :integer
182
+
140
183
  # @!attribute [rw] layout
141
184
  # @return [String] template to use for layout on the frontend (default: +"spree/layouts/spree_application"+)
142
185
  preference :layout, :string, default: 'spree/layouts/spree_application'
@@ -145,6 +188,14 @@ module Spree
145
188
  # @return [String] URL of logo used on frontend (default: +'logo/solidus.svg'+)
146
189
  preference :logo, :string, default: 'logo/solidus.svg'
147
190
 
191
+ # @!attribute [rw] mails_from
192
+ # @return [String] Email address used as +From:+ field in transactional emails.
193
+ preference :mails_from, :string, default: 'spree@example.com'
194
+
195
+ # @!attribute [rw] max_level_in_taxons_menu
196
+ # @return [Integer] maximum nesting level in taxons menu (default: +1+)
197
+ preference :max_level_in_taxons_menu, :integer, default: 1
198
+
148
199
  # @!attribute [rw] order_bill_address_used
149
200
  # @return [Boolean] Use the order's bill address, as opposed to storing
150
201
  # bill addresses on payment sources. (default: +true+)
@@ -154,10 +205,6 @@ module Spree
154
205
  # @return [Integer] the number of days to look back for fully-shipped/cancelled orders in order to charge for them
155
206
  preference :order_capturing_time_window, :integer, default: 14
156
207
 
157
- # @!attribute [rw] max_level_in_taxons_menu
158
- # @return [Integer] maximum nesting level in taxons menu (default: +1+)
159
- preference :max_level_in_taxons_menu, :integer, default: 1
160
-
161
208
  # @!attribute [rw] order_mutex_max_age
162
209
  # @return [Integer] Max age of {Spree::OrderMutex} in seconds (default: 2 minutes)
163
210
  preference :order_mutex_max_age, :integer, default: 120
@@ -178,9 +225,22 @@ module Spree
178
225
  # @return [Integer] Promotions to show per-page in the admin (default: +15+)
179
226
  preference :promotions_per_page, :integer, default: 15
180
227
 
181
- # @!attribute [rw] customer_returns_per_page
182
- # @return [Integer] Customer returns to show per-page in the admin (default: +15+)
183
- preference :customer_returns_per_page, :integer, default: 15
228
+ # @!attribute [rw] disable_actionless_promotion_validation
229
+ # @return [Boolean] Promotions should have actions associated before being considered active (default: +true+)
230
+ preference :consider_actionless_promotion_active, :boolean, default: true
231
+
232
+ # @!attribute [rw] raise_with_invalid_currency
233
+ # Whether to raise an exception if trying to set a line item currency
234
+ # different from the order currency. When false a validation error
235
+ # is added to the instance instead.
236
+ # @return [Boolean] (default: +true+)
237
+ preference :raise_with_invalid_currency, :boolean, default: true
238
+
239
+ # @!attribute [rw] redirect_back_on_unauthorized
240
+ # Whether to try to redirect users back when they try to access
241
+ # unauthorized routes, before redirect them to /unauthorized.
242
+ # @return [Boolean] (default: +false+)
243
+ preference :redirect_back_on_unauthorized, :boolean, default: false
184
244
 
185
245
  # @!attribute [rw] require_master_price
186
246
  # @return [Boolean] Require a price on the master variant of a product (default: +true+)
@@ -200,6 +260,22 @@ module Spree
200
260
  # (default: +['admin']+)
201
261
  preference :roles_for_auto_api_key, :array, default: ['admin']
202
262
 
263
+ # @!attribute [rw] countries_that_use_nested_subregions
264
+ # @return [Array] An array of countries that use nested subregions, instead
265
+ # of the default subregions that come with Carmen. Will be used on store creation
266
+ # to ensure the correct states are generated, and when running the states
267
+ # regenerate rake task.
268
+ # (default: +['IT']+)
269
+ preference :countries_that_use_nested_subregions, :array, default: ['IT']
270
+
271
+ # @!attribute [rw] run_order_validations_on_order_updater
272
+ # @return [Boolean] Whether to run validation when updating an order with the OrderUpdater
273
+ preference :run_order_validations_on_order_updater, :boolean, default: false
274
+
275
+ # @!attribute [rw] send_core_emails
276
+ # @return [Boolean] Whether to send transactional emails (default: true)
277
+ preference :send_core_emails, :boolean, default: true
278
+
203
279
  # @!attribute [rw] shipping_instructions
204
280
  # @return [Boolean] Request instructions/info for shipping (default: +false+)
205
281
  preference :shipping_instructions, :boolean, default: false
@@ -231,33 +307,23 @@ module Spree
231
307
  # @return [] Track on_hand values for variants / products. (default: true)
232
308
  preference :track_inventory_levels, :boolean, default: true
233
309
 
234
- # Default mail headers settings
235
-
236
- # @!attribute [rw] send_core_emails
237
- # @return [Boolean] Whether to send transactional emails (default: true)
238
- preference :send_core_emails, :boolean, default: true
239
-
240
- # @!attribute [rw] mails_from
241
- # @return [String] Email address used as +From:+ field in transactional emails.
242
- preference :mails_from, :string, default: 'spree@example.com'
243
-
244
- # Store credits configurations
310
+ # @!attribute [rw] use_combined_first_and_last_name_in_address
311
+ # @return [Boolean] Use Spree::Address combined first and last name in HTML views and
312
+ # API responses. (default: +false+)
313
+ preference :use_combined_first_and_last_name_in_address, :boolean, default: false
245
314
 
246
- # @!attribute [rw] credit_to_new_allocation
247
- # @return [Boolean] Creates a new allocation anytime {Spree::StoreCredit#credit} is called
248
- preference :credit_to_new_allocation, :boolean, default: false
315
+ # @!attribute [rw] use_legacy_order_state_machine
316
+ # @return [Boolean] Uses the legacy order state machine from Spree::Order::Checkout
317
+ # (default: +false+)
318
+ preference :use_legacy_order_state_machine, :boolean, default: true
249
319
 
250
- # @!attribute [rw] automatic_default_address
251
- # The default value of true preserves existing backwards compatible feature of
252
- # treating the most recently used address in checkout as the user's default address.
253
- # Setting to false means that the user should manage their own default via some
254
- # custom UI that uses AddressBookController.
255
- # @return [Boolean] Whether use of an address in checkout marks it as user's default
256
- preference :automatic_default_address, :boolean, default: true
320
+ # The legacy_store_credit_category_name allows to control whether the legacy
321
+ # way of fetching the category should be used.
322
+ #
323
+ # @param [Boolean] enable/disable the legacy way of fetching the store category name
324
+ preference :use_legacy_store_credit_reimbursement_category_name, :boolean, default: true
257
325
 
258
- # @!attribute [rw] can_restrict_stock_management
259
- # @return [Boolean] Indicates if stock management can be restricted by location
260
- preference :can_restrict_stock_management, :boolean, default: false
326
+ # Other configurations
261
327
 
262
328
  # Allows restricting what currencies will be available.
263
329
  #
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AwesomeNestedSetOvveride
4
+ # Add :polimorphic key option only when used to make it work with Rails 6.1+,
5
+ # required since rails/rails@2c008d9
6
+ # This can be removed when upgrading to an awesome_nested_set version
7
+ # compliant with Rails 6.1+, already addressed in
8
+ # collectiveidea/awesome_nested_set#421
9
+ module RelateParent
10
+ def acts_as_nested_set_relate_parent!
11
+ # Disable Rubocop to keep original code for diffs
12
+ # rubocop:disable
13
+ options = {
14
+ :class_name => self.base_class.to_s,
15
+ :foreign_key => parent_column_name,
16
+ :primary_key => primary_column_name,
17
+ :counter_cache => acts_as_nested_set_options[:counter_cache],
18
+ :inverse_of => (:children unless acts_as_nested_set_options[:polymorphic]),
19
+ :touch => acts_as_nested_set_options[:touch]
20
+ }
21
+ options[:polymorphic] = true if acts_as_nested_set_options[:polymorphic]
22
+ options[:optional] = true if ActiveRecord::VERSION::MAJOR >= 5
23
+ belongs_to :parent, options
24
+ # rubocop:enable
25
+ end
26
+
27
+ CollectiveIdea::Acts::NestedSet.prepend self
28
+ end
29
+
30
+ # Skip breaking model reload before update depth. Already addressed in
31
+ # collectiveidea/awesome_nested_set#413
32
+ # This can be removed when a new version of awesome_nested_set is released.
33
+ module Model
34
+ def set_depth!
35
+ return unless has_depth_column?
36
+
37
+ in_tenacious_transaction do
38
+ update_depth(level)
39
+ end
40
+ end
41
+
42
+ CollectiveIdea::Acts::NestedSet::Model.prepend self
43
+ end
44
+ end
@@ -11,7 +11,7 @@ module Spree
11
11
  # @!attribute [rw] unauthorized_redirect
12
12
  # @!scope class
13
13
  # Extension point for overriding behaviour of access denied errors.
14
- # Default behaviour is to redirect to "/unauthorized" with a flash
14
+ # Default behaviour is to redirect back or to "/unauthorized" with a flash
15
15
  # message.
16
16
  # @return [Proc] action to take when access denied error is raised.
17
17
 
@@ -22,7 +22,20 @@ module Spree
22
22
  class_attribute :unauthorized_redirect
23
23
  self.unauthorized_redirect = -> do
24
24
  flash[:error] = I18n.t('spree.authorization_failure')
25
- redirect_to "/unauthorized"
25
+ if Spree::Config.redirect_back_on_unauthorized
26
+ redirect_back(fallback_location: "/unauthorized")
27
+ else
28
+ Spree::Deprecation.warn <<-WARN.strip_heredoc, caller
29
+ Having Spree::Config.redirect_back_on_unauthorized set
30
+ to `false` is deprecated and will not be supported in Solidus 3.0.
31
+
32
+ Please change this configuration to `true` and be sure that your
33
+ application does not break trying to redirect back when there is
34
+ an unauthorized access.
35
+ WARN
36
+
37
+ redirect_to "/unauthorized"
38
+ end
26
39
  end
27
40
 
28
41
  rescue_from CanCan::AccessDenied do
@@ -42,10 +55,10 @@ module Spree
42
55
 
43
56
  def set_guest_token
44
57
  unless cookies.signed[:guest_token].present?
45
- cookies.permanent.signed[:guest_token] = {
58
+ cookies.permanent.signed[:guest_token] = Spree::Config[:guest_token_cookie_options].merge(
46
59
  value: SecureRandom.urlsafe_base64(nil, false),
47
60
  httponly: true
48
- }
61
+ )
49
62
  end
50
63
  end
51
64
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Core
5
+ module ControllerHelpers
6
+ module CurrentHost
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ before_action do
11
+ ActiveStorage::Current.host = request.base_url
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -30,18 +30,19 @@ module Spree
30
30
 
31
31
  # The current incomplete order from the guest_token for use in cart and during checkout
32
32
  def current_order(options = {})
33
- options[:create_order_if_necessary] ||= false
33
+ should_create = options[:create_order_if_necessary] || false
34
+ should_build = options[:build_order_if_necessary] || should_create
34
35
 
35
36
  return @current_order if @current_order
36
37
 
37
- @current_order = find_order_by_token_or_user(options)
38
+ @current_order = find_order_by_token_or_user(lock: options[:lock])
38
39
 
39
- if options[:create_order_if_necessary] && (@current_order.nil? || @current_order.completed?)
40
+ if should_build && (@current_order.nil? || @current_order.completed?)
40
41
  @current_order = Spree::Order.new(new_order_params)
41
42
  @current_order.user ||= try_spree_current_user
42
43
  # See issue https://github.com/spree/spree/issues/3346 for reasons why this line is here
43
44
  @current_order.created_by ||= try_spree_current_user
44
- @current_order.save!
45
+ @current_order.save! if should_create
45
46
  end
46
47
 
47
48
  if @current_order
@@ -84,14 +85,14 @@ module Spree
84
85
  end
85
86
 
86
87
  def find_order_by_token_or_user(options = {}, with_adjustments = false)
87
- options[:lock] ||= false
88
+ should_lock = options[:lock] || false
88
89
 
89
90
  # Find any incomplete orders for the guest_token
90
91
  if with_adjustments
91
92
  Spree::Deprecation.warn "The second argument to find_order_by_token_or_user is deprecated, and will be removed in a future version."
92
- order = Spree::Order.incomplete.includes(:adjustments).lock(options[:lock]).find_by(current_order_params)
93
+ order = Spree::Order.incomplete.includes(:adjustments).lock(should_lock).find_by(current_order_params)
93
94
  else
94
- order = Spree::Order.incomplete.lock(options[:lock]).find_by(current_order_params)
95
+ order = Spree::Order.incomplete.lock(should_lock).find_by(current_order_params)
95
96
  end
96
97
 
97
98
  # Find any incomplete orders for the current user
@@ -31,16 +31,30 @@ module Spree
31
31
  end
32
32
 
33
33
  def permitted_checkout_attributes
34
- permitted_attributes.checkout_attributes + [
35
- bill_address_attributes: permitted_address_attributes,
36
- ship_address_attributes: permitted_address_attributes,
37
- payments_attributes: permitted_payment_attributes,
38
- shipments_attributes: permitted_shipment_attributes
39
- ]
34
+ permitted_attributes.checkout_attributes
35
+ end
36
+
37
+ def permitted_checkout_address_attributes
38
+ permitted_attributes.checkout_address_attributes
39
+ end
40
+
41
+ def permitted_checkout_delivery_attributes
42
+ permitted_attributes.checkout_delivery_attributes
43
+ end
44
+
45
+ def permitted_checkout_payment_attributes
46
+ permitted_attributes.checkout_payment_attributes
47
+ end
48
+
49
+ def permitted_checkout_confirm_attributes
50
+ permitted_attributes.checkout_confirm_attributes
40
51
  end
41
52
 
42
53
  def permitted_order_attributes
43
- permitted_checkout_attributes + [
54
+ permitted_checkout_address_attributes +
55
+ permitted_checkout_delivery_attributes +
56
+ permitted_checkout_payment_attributes +
57
+ permitted_checkout_confirm_attributes + [
44
58
  line_items_attributes: permitted_line_item_attributes
45
59
  ]
46
60
  end
@@ -47,11 +47,48 @@ module Spree
47
47
  # Setup Event Subscribers
48
48
  initializer 'spree.core.initialize_subscribers' do |app|
49
49
  app.reloader.to_prepare do
50
- Spree::Event.subscribers.each(&:subscribe!)
50
+ Spree::Event.activate_autoloadable_subscribers
51
51
  end
52
52
 
53
53
  app.reloader.before_class_unload do
54
- Spree::Event.subscribers.each(&:unsubscribe!)
54
+ Spree::Event.deactivate_all_subscribers
55
+ end
56
+ end
57
+
58
+ config.after_initialize do
59
+ if Spree::Config.raise_with_invalid_currency == true
60
+ Spree::Deprecation.warn(
61
+ 'Spree::Config.raise_with_invalid_currency set to true is ' \
62
+ 'deprecated. Please note that by switching this value, ' \
63
+ 'Spree::LineItem::CurrencyMismatch will not be raised anymore.',
64
+ caller
65
+ )
66
+ end
67
+ if Spree::Config.consider_actionless_promotion_active == true
68
+ Spree::Deprecation.warn(
69
+ 'Spree::Config.consider_actionless_promotion_active set to true is ' \
70
+ 'deprecated. Please note that by switching this value, ' \
71
+ 'promotions with no actions will be considered active.',
72
+ caller
73
+ )
74
+ end
75
+ if Spree::Config.run_order_validations_on_order_updater != true
76
+ Spree::Deprecation.warn(
77
+ 'Spree::Config.run_order_validations_on_order_updater set to false is ' \
78
+ 'deprecated and will not be possibile in Solidus 3.0. Please switch this ' \
79
+ 'value to true and check that everything works as expected.',
80
+ caller
81
+ )
82
+ end
83
+
84
+ if Spree::Config.use_legacy_address_state_validator != false
85
+ Spree::Deprecation.warn(<<~DEPRECATION.squish, caller)
86
+ Spree::Config.use_legacy_address_state_validator set to true has been
87
+ deprecated and will be removed in Solidus 3.0. The Spree::Address state
88
+ validation has been extracted into a configurable external class.
89
+ Switch Spree::Config.use_legacy_address_state_validator to true to start
90
+ using the external validation class.
91
+ DEPRECATION
55
92
  end
56
93
  end
57
94
 
@@ -56,7 +56,9 @@ module Spree
56
56
  shipments_hash.each do |target|
57
57
  shipment = Shipment.new
58
58
  shipment.tracking = target[:tracking]
59
- shipment.stock_location = Spree::StockLocation.find_by(admin_name: target[:stock_location]) || Spree::StockLocation.find_by!(name: target[:stock_location])
59
+ shipment.stock_location = Spree::StockLocation.find_by(id: target[:stock_location_id]) ||
60
+ Spree::StockLocation.find_by(admin_name: target[:stock_location]) ||
61
+ Spree::StockLocation.find_by!(name: target[:stock_location])
60
62
 
61
63
  inventory_units = target[:inventory_units] || []
62
64
  inventory_units.each do |inventory_unit|
@@ -98,19 +100,31 @@ module Spree
98
100
 
99
101
  def self.create_line_items_from_params(line_items_hash, order)
100
102
  return {} unless line_items_hash
101
- line_items_hash.each_key do |key|
102
- extra_params = line_items_hash[key].except(:variant_id, :quantity, :sku)
103
- line_item = ensure_variant_id_from_params(line_items_hash[key])
104
- line_item = order.contents.add(Spree::Variant.find(line_item[:variant_id]), line_item[:quantity])
105
- # Raise any errors with saving to prevent import succeeding with line items failing silently.
106
- if extra_params.present?
107
- line_item.update!(extra_params)
108
- else
109
- line_item.save!
103
+
104
+ case line_items_hash
105
+ when Hash
106
+ line_items_hash.each_key do |key|
107
+ create_line_item(line_items_hash[key], order)
108
+ end
109
+ when Array
110
+ line_items_hash.each do |line_item_hash|
111
+ create_line_item(line_item_hash, order)
110
112
  end
111
113
  end
112
114
  end
113
115
 
116
+ def self.create_line_item(line_item_hash, order)
117
+ extra_params = line_item_hash.except(:variant_id, :quantity, :sku)
118
+ line_item = ensure_variant_id_from_params(line_item_hash)
119
+ line_item = order.contents.add(Spree::Variant.find(line_item[:variant_id]), line_item[:quantity])
120
+ # Raise any errors with saving to prevent import succeeding with line items failing silently.
121
+ if extra_params.present?
122
+ line_item.update!(extra_params)
123
+ else
124
+ line_item.save!
125
+ end
126
+ end
127
+
114
128
  def self.create_adjustments_from_params(adjustments, order)
115
129
  return [] unless adjustments
116
130
  adjustments.each do |target|
@@ -133,7 +147,8 @@ module Spree
133
147
  # spree_wombat serializes payment state as status so imported orders should fall back to status field.
134
148
  payment.state = target[:state] || target[:status] || 'completed'
135
149
  payment.payment_method = Spree::PaymentMethod.find_by!(name: target[:payment_method])
136
- payment.source = create_source_payment_from_params(target[:source], payment) if target[:source]
150
+ source_attributes = target[:source] || target[:source_attributes]
151
+ payment.source = create_source_payment_from_params(source_attributes, payment) if source_attributes
137
152
  payment.save!
138
153
  end
139
154
  end
@@ -9,7 +9,7 @@ module Spree
9
9
  class_attribute :permalink_options
10
10
  end
11
11
 
12
- module ClassMethods
12
+ class_methods do
13
13
  def make_permalink(options = {})
14
14
  options[:field] ||= :permalink
15
15
  self.permalink_options = options
@@ -63,5 +63,3 @@ module Spree
63
63
  end
64
64
  end
65
65
  end
66
-
67
- ActiveRecord::Base.send :include, Spree::Core::Permalinks
@@ -60,6 +60,7 @@ module Spree
60
60
  conds.each do |new_scope|
61
61
  scope = scope.or(new_scope)
62
62
  end
63
+
63
64
  Spree::Product.joins(master: :default_price).where(scope)
64
65
  end
65
66
 
@@ -70,9 +71,9 @@ module Spree
70
71
  def self.price_filter
71
72
  value = Spree::Price.arel_table
72
73
  conds = [[I18n.t('spree.under_price', price: format_price(10)), value[:amount].lteq(10)],
73
- ["#{format_price(10)} - #{format_price(15)}", value[:amount].in(10..15)],
74
- ["#{format_price(15)} - #{format_price(18)}", value[:amount].in(15..18)],
75
- ["#{format_price(18)} - #{format_price(20)}", value[:amount].in(18..20)],
74
+ ["#{format_price(10)} - #{format_price(15)}", value[:amount].between(10..15)],
75
+ ["#{format_price(15)} - #{format_price(18)}", value[:amount].between(15..18)],
76
+ ["#{format_price(18)} - #{format_price(20)}", value[:amount].between(18..20)],
76
77
  [I18n.t('spree.or_over_price', price: format_price(20)), value[:amount].gteq(20)]]
77
78
  {
78
79
  name: I18n.t('spree.price_range'),
@@ -107,7 +108,7 @@ module Spree
107
108
  brand_property = Spree::Property.find_by(name: 'brand')
108
109
  brands = brand_property ? Spree::ProductProperty.where(property_id: brand_property.id).pluck(:value).uniq.map(&:to_s) : []
109
110
  pp = Spree::ProductProperty.arel_table
110
- conds = Hash[*brands.map { |brand| [brand, pp[:value].eq(brand)] }.flatten]
111
+ conds = Hash[*brands.flat_map { |brand| [brand, pp[:value].eq(brand)] }]
111
112
  {
112
113
  name: 'Brands',
113
114
  scope: :brand_any,
@@ -184,7 +185,7 @@ module Spree
184
185
  # idea: expand the format to allow nesting of labels?
185
186
  def self.all_taxons
186
187
  Spree::Deprecation.warn "all_taxons is deprecated in solidus_core. Please add it to your own application to continue using it."
187
- taxons = Spree::Taxonomy.all.map { |element| [element.root] + element.root.descendants }.flatten
188
+ taxons = Spree::Taxonomy.all.flat_map { |element| [element.root] + element.root.descendants }
188
189
  {
189
190
  name: 'All taxons',
190
191
  scope: :taxons_id_equals_any,