solidus_core 1.0.7 → 1.1.0.beta1

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 (349) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/base_controller.rb +1 -2
  3. data/app/helpers/spree/base_helper.rb +4 -5
  4. data/app/helpers/spree/products_helper.rb +0 -8
  5. data/app/mailers/spree/carton_mailer.rb +17 -5
  6. data/app/mailers/spree/order_mailer.rb +12 -4
  7. data/app/models/concerns/spree/adjustment_source.rb +7 -8
  8. data/app/models/concerns/spree/default_price.rb +8 -2
  9. data/app/models/concerns/spree/named_type.rb +1 -1
  10. data/app/models/concerns/spree/ordered_property_value_list.rb +28 -0
  11. data/app/models/concerns/spree/user_address_book.rb +125 -0
  12. data/app/models/concerns/spree/user_api_authentication.rb +6 -2
  13. data/app/models/concerns/spree/user_methods.rb +5 -6
  14. data/app/models/spree/ability.rb +1 -38
  15. data/app/models/spree/address.rb +79 -36
  16. data/app/models/spree/adjustment.rb +74 -25
  17. data/app/models/spree/adjustment_reason.rb +1 -1
  18. data/app/models/spree/app_configuration.rb +35 -0
  19. data/app/models/spree/carton.rb +3 -3
  20. data/app/models/spree/country.rb +7 -1
  21. data/app/models/spree/credit_card.rb +5 -1
  22. data/app/models/spree/gateway.rb +0 -8
  23. data/app/models/spree/inventory_unit.rb +1 -1
  24. data/app/models/spree/item_adjustments.rb +1 -1
  25. data/app/models/spree/line_item_action.rb +1 -1
  26. data/app/models/spree/option_type.rb +3 -2
  27. data/app/models/spree/option_value.rb +1 -1
  28. data/app/models/spree/option_values_variant.rb +1 -1
  29. data/app/models/spree/order.rb +28 -56
  30. data/app/models/spree/order/checkout.rb +18 -20
  31. data/app/models/spree/order_mutex.rb +1 -1
  32. data/app/models/spree/order_promotion.rb +1 -1
  33. data/app/models/spree/order_shipping.rb +6 -12
  34. data/app/models/spree/order_stock_location.rb +1 -1
  35. data/app/models/spree/payment.rb +3 -14
  36. data/app/models/spree/payment/processing.rb +7 -14
  37. data/app/models/spree/payment_method.rb +5 -5
  38. data/app/models/spree/permission_sets/default_customer.rb +31 -0
  39. data/app/models/spree/permission_sets/order_display.rb +4 -0
  40. data/app/models/spree/permission_sets/order_management.rb +3 -0
  41. data/app/models/spree/permission_sets/promotion_display.rb +2 -1
  42. data/app/models/spree/permission_sets/restricted_stock_display.rb +16 -0
  43. data/app/models/spree/permission_sets/restricted_stock_management.rb +16 -0
  44. data/app/models/spree/permission_sets/restricted_stock_transfer_display.rb +17 -0
  45. data/app/models/spree/permission_sets/restricted_stock_transfer_management.rb +51 -0
  46. data/app/models/spree/permission_sets/stock_display.rb +1 -1
  47. data/app/models/spree/permission_sets/stock_management.rb +1 -2
  48. data/app/models/spree/permission_sets/stock_transfer_display.rb +10 -0
  49. data/app/models/spree/permission_sets/stock_transfer_management.rb +11 -0
  50. data/app/models/spree/permission_sets/super_user.rb +9 -0
  51. data/app/models/spree/product.rb +66 -28
  52. data/app/models/spree/product/scopes.rb +7 -22
  53. data/app/models/spree/product_option_type.rb +1 -1
  54. data/app/models/spree/product_promotion_rule.rb +6 -0
  55. data/app/models/spree/product_property.rb +2 -20
  56. data/app/models/spree/promotion/rules/product.rb +2 -1
  57. data/app/models/spree/refund.rb +0 -10
  58. data/app/models/spree/reimbursement.rb +1 -1
  59. data/app/models/spree/return_item.rb +5 -3
  60. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +13 -4
  61. data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +2 -2
  62. data/app/models/spree/return_reason.rb +1 -1
  63. data/app/models/spree/role.rb +1 -1
  64. data/app/models/spree/role_user.rb +1 -1
  65. data/app/models/spree/shipment.rb +13 -4
  66. data/app/models/spree/shipping_manifest.rb +9 -3
  67. data/app/models/spree/shipping_method.rb +2 -3
  68. data/app/models/spree/shipping_method_zone.rb +6 -0
  69. data/app/models/spree/state.rb +1 -1
  70. data/app/models/spree/stock_item.rb +15 -3
  71. data/app/models/spree/stock_movement.rb +1 -1
  72. data/app/models/spree/store.rb +3 -0
  73. data/app/models/spree/store_credit.rb +1 -1
  74. data/app/models/spree/store_credit_category.rb +1 -1
  75. data/app/models/spree/store_credit_event.rb +1 -1
  76. data/app/models/spree/store_credit_type.rb +1 -1
  77. data/app/models/spree/store_credit_update_reason.rb +1 -1
  78. data/app/models/spree/store_payment_method.rb +6 -0
  79. data/app/models/spree/tax_rate.rb +3 -10
  80. data/app/models/spree/taxonomy.rb +1 -1
  81. data/app/models/spree/transfer_item.rb +1 -1
  82. data/app/models/spree/unit_cancel.rb +2 -2
  83. data/app/models/spree/user_address.rb +21 -0
  84. data/app/models/spree/user_stock_location.rb +1 -1
  85. data/app/models/spree/variant.rb +28 -13
  86. data/app/models/spree/variant_property_rule.rb +42 -0
  87. data/app/models/spree/variant_property_rule_condition.rb +8 -0
  88. data/app/models/spree/variant_property_rule_value.rb +8 -0
  89. data/app/models/spree/zone.rb +4 -2
  90. data/app/views/spree/carton_mailer/shipped_email.text.erb +1 -1
  91. data/config/locales/en.yml +13 -0
  92. data/db/default/spree/store_credit.rb +0 -1
  93. data/db/default/spree/zones.rb +1 -1
  94. data/db/migrate/20130228210442_create_shipping_method_zone.rb +1 -1
  95. data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +6 -0
  96. data/db/migrate/20150506181611_create_spree_store_credit_payment_method.rb +9 -5
  97. data/db/migrate/20150731201146_add_spree_user_addresses.rb +16 -0
  98. data/db/migrate/20150811210350_remove_mandatory_from_adjustments.rb +5 -0
  99. data/db/migrate/20150811211025_add_finalized_to_spree_adjustments.rb +11 -0
  100. data/db/migrate/20150820160821_add_store_payment_methods.rb +10 -0
  101. data/db/migrate/20150824213633_convert_habtm_to_hmt_for_shipping_methods_zones.rb +17 -0
  102. data/db/migrate/20150824214129_convert_habtm_to_hmt_for_products_promotion_rules.rb +17 -0
  103. data/db/migrate/20150825204216_drop_spree_gateways.rb +20 -0
  104. data/db/migrate/20150909123605_create_variant_properties_and_rules.rb +28 -0
  105. data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
  106. data/lib/generators/spree/install/templates/config/initializers/spree.rb +4 -3
  107. data/lib/spree/core.rb +4 -0
  108. data/lib/spree/core/controller_helpers/payment_parameters.rb +67 -0
  109. data/lib/spree/core/delegate_belongs_to.rb +1 -0
  110. data/lib/spree/core/engine.rb +9 -1
  111. data/lib/spree/core/importer/order.rb +1 -1
  112. data/lib/spree/core/role_configuration.rb +1 -1
  113. data/lib/spree/core/search/variant.rb +20 -2
  114. data/lib/spree/core/unreturned_item_charger.rb +21 -16
  115. data/lib/spree/i18n.rb +6 -24
  116. data/lib/spree/mailer_previews/carton_preview.rb +10 -0
  117. data/lib/spree/mailer_previews/order_preview.rb +18 -0
  118. data/lib/spree/permitted_attributes.rb +4 -1
  119. data/lib/spree/testing_support/capybara_ext.rb +2 -1
  120. data/lib/spree/testing_support/factories/address_factory.rb +9 -1
  121. data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -0
  122. data/lib/spree/testing_support/factories/image_factory.rb +5 -0
  123. data/lib/spree/testing_support/factories/payment_method_factory.rb +4 -8
  124. data/lib/spree/testing_support/factories/user_factory.rb +8 -2
  125. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +6 -0
  126. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +16 -0
  127. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +6 -0
  128. data/lib/tasks/migrations/migrate_user_addresses.rake +29 -0
  129. data/vendor/assets/javascripts/jquery-migrate-1.0.0.js +498 -0
  130. metadata +40 -238
  131. data/CHANGELOG.md +0 -1
  132. data/Gemfile +0 -3
  133. data/Rakefile +0 -16
  134. data/app/models/concerns/spree/user_address.rb +0 -30
  135. data/app/models/spree/permission_sets/restricted_transfer_management.rb +0 -35
  136. data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +0 -19
  137. data/lib/spree/i18n/base.rb +0 -17
  138. data/lib/spree/i18n/initializer.rb +0 -1
  139. data/lib/spree/testing_support/mail.rb +0 -20
  140. data/script/rails +0 -9
  141. data/solidus_core.gemspec +0 -48
  142. data/spec/fixtures/thinking-cat.jpg +0 -0
  143. data/spec/helpers/base_helper_spec.rb +0 -173
  144. data/spec/helpers/order_helper_spec.rb +0 -12
  145. data/spec/helpers/products_helper_spec.rb +0 -220
  146. data/spec/helpers/taxons_helper_spec.rb +0 -17
  147. data/spec/lib/calculated_adjustments_spec.rb +0 -7
  148. data/spec/lib/i18n_spec.rb +0 -123
  149. data/spec/lib/search/base_spec.rb +0 -86
  150. data/spec/lib/search/variant_spec.rb +0 -92
  151. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -66
  152. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -92
  153. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -17
  154. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -16
  155. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -39
  156. data/spec/lib/spree/core/current_store_spec.rb +0 -36
  157. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +0 -22
  158. data/spec/lib/spree/core/importer/order_spec.rb +0 -431
  159. data/spec/lib/spree/core/role_configuration_spec.rb +0 -138
  160. data/spec/lib/spree/core/validators/email_spec.rb +0 -48
  161. data/spec/lib/spree/localized_number_spec.rb +0 -38
  162. data/spec/lib/spree/migrations_spec.rb +0 -36
  163. data/spec/lib/spree/money_spec.rb +0 -127
  164. data/spec/lib/tasks/exchanges_spec.rb +0 -231
  165. data/spec/lib/tasks/migrations/copy_shipped_shipments_to_cartons_spec.rb +0 -115
  166. data/spec/lib/tasks/order_capturing_spec.rb +0 -56
  167. data/spec/mailers/carton_mailer_spec.rb +0 -43
  168. data/spec/mailers/order_mailer_spec.rb +0 -122
  169. data/spec/mailers/reimbursement_mailer_spec.rb +0 -40
  170. data/spec/mailers/test_mailer_spec.rb +0 -15
  171. data/spec/models/spree/ability_spec.rb +0 -276
  172. data/spec/models/spree/address_spec.rb +0 -250
  173. data/spec/models/spree/adjustment_reason_spec.rb +0 -13
  174. data/spec/models/spree/adjustment_spec.rb +0 -177
  175. data/spec/models/spree/app_configuration_spec.rb +0 -20
  176. data/spec/models/spree/asset_spec.rb +0 -24
  177. data/spec/models/spree/calculator/default_tax_spec.rb +0 -127
  178. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -25
  179. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -47
  180. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -41
  181. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -15
  182. data/spec/models/spree/calculator/price_sack_spec.rb +0 -30
  183. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -51
  184. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -23
  185. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -13
  186. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -52
  187. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -20
  188. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -30
  189. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -36
  190. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -47
  191. data/spec/models/spree/calculator_spec.rb +0 -36
  192. data/spec/models/spree/carton_spec.rb +0 -133
  193. data/spec/models/spree/classification_spec.rb +0 -15
  194. data/spec/models/spree/concerns/display_money_spec.rb +0 -43
  195. data/spec/models/spree/concerns/user_methods_spec.rb +0 -41
  196. data/spec/models/spree/credit_card_spec.rb +0 -334
  197. data/spec/models/spree/customer_return_spec.rb +0 -276
  198. data/spec/models/spree/exchange_spec.rb +0 -79
  199. data/spec/models/spree/gateway/bogus_simple.rb +0 -20
  200. data/spec/models/spree/gateway/bogus_spec.rb +0 -13
  201. data/spec/models/spree/gateway_spec.rb +0 -82
  202. data/spec/models/spree/inventory_unit_spec.rb +0 -307
  203. data/spec/models/spree/item_adjustments_spec.rb +0 -256
  204. data/spec/models/spree/line_item_spec.rb +0 -191
  205. data/spec/models/spree/option_type_spec.rb +0 -14
  206. data/spec/models/spree/option_value_spec.rb +0 -22
  207. data/spec/models/spree/order/address_spec.rb +0 -50
  208. data/spec/models/spree/order/adjustments_spec.rb +0 -39
  209. data/spec/models/spree/order/callbacks_spec.rb +0 -42
  210. data/spec/models/spree/order/checkout_spec.rb +0 -902
  211. data/spec/models/spree/order/currency_updater_spec.rb +0 -32
  212. data/spec/models/spree/order/finalizing_spec.rb +0 -111
  213. data/spec/models/spree/order/payment_spec.rb +0 -210
  214. data/spec/models/spree/order/risk_assessment_spec.rb +0 -68
  215. data/spec/models/spree/order/state_machine_spec.rb +0 -221
  216. data/spec/models/spree/order/tax_spec.rb +0 -84
  217. data/spec/models/spree/order/totals_spec.rb +0 -24
  218. data/spec/models/spree/order/updating_spec.rb +0 -18
  219. data/spec/models/spree/order/validations_spec.rb +0 -15
  220. data/spec/models/spree/order_cancellations_spec.rb +0 -120
  221. data/spec/models/spree/order_capturing_spec.rb +0 -116
  222. data/spec/models/spree/order_contents_spec.rb +0 -265
  223. data/spec/models/spree/order_inventory_spec.rb +0 -228
  224. data/spec/models/spree/order_mutex_spec.rb +0 -85
  225. data/spec/models/spree/order_promotion_spec.rb +0 -31
  226. data/spec/models/spree/order_shipping_spec.rb +0 -247
  227. data/spec/models/spree/order_spec.rb +0 -1464
  228. data/spec/models/spree/order_stock_location_spec.rb +0 -18
  229. data/spec/models/spree/order_updater_spec.rb +0 -299
  230. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -294
  231. data/spec/models/spree/payment_method_spec.rb +0 -96
  232. data/spec/models/spree/payment_spec.rb +0 -1045
  233. data/spec/models/spree/permission_sets/base_spec.rb +0 -12
  234. data/spec/models/spree/permission_sets/configuration_display.rb +0 -82
  235. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -50
  236. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -22
  237. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -49
  238. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -36
  239. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -60
  240. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -40
  241. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -34
  242. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -26
  243. data/spec/models/spree/permission_sets/report_display_spec.rb +0 -24
  244. data/spec/models/spree/permission_sets/restricted_transfer_management_spec.rb +0 -132
  245. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -26
  246. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -24
  247. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -36
  248. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -28
  249. data/spec/models/spree/preference_spec.rb +0 -80
  250. data/spec/models/spree/preferences/configuration_spec.rb +0 -30
  251. data/spec/models/spree/preferences/preferable_spec.rb +0 -294
  252. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -58
  253. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -78
  254. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -60
  255. data/spec/models/spree/preferences/store_spec.rb +0 -39
  256. data/spec/models/spree/price_spec.rb +0 -42
  257. data/spec/models/spree/product/scopes_spec.rb +0 -148
  258. data/spec/models/spree/product_duplicator_spec.rb +0 -103
  259. data/spec/models/spree/product_filter_spec.rb +0 -26
  260. data/spec/models/spree/product_property_spec.rb +0 -20
  261. data/spec/models/spree/product_spec.rb +0 -437
  262. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -96
  263. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -165
  264. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -115
  265. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -40
  266. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -75
  267. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -67
  268. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -70
  269. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -42
  270. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -94
  271. data/spec/models/spree/promotion/rules/product_spec.rb +0 -143
  272. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -102
  273. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -27
  274. data/spec/models/spree/promotion/rules/user_spec.rb +0 -37
  275. data/spec/models/spree/promotion_builder_spec.rb +0 -118
  276. data/spec/models/spree/promotion_category_spec.rb +0 -17
  277. data/spec/models/spree/promotion_code/code_builder_spec.rb +0 -79
  278. data/spec/models/spree/promotion_code_spec.rb +0 -187
  279. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -114
  280. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -335
  281. data/spec/models/spree/promotion_handler/free_shipping_spec.rb +0 -47
  282. data/spec/models/spree/promotion_handler/page_spec.rb +0 -44
  283. data/spec/models/spree/promotion_rule_spec.rb +0 -28
  284. data/spec/models/spree/promotion_spec.rb +0 -767
  285. data/spec/models/spree/refund_spec.rb +0 -204
  286. data/spec/models/spree/reimbursement/credit_spec.rb +0 -36
  287. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -140
  288. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -83
  289. data/spec/models/spree/reimbursement_performer_spec.rb +0 -30
  290. data/spec/models/spree/reimbursement_spec.rb +0 -231
  291. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -51
  292. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -53
  293. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -46
  294. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -107
  295. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -97
  296. data/spec/models/spree/return_authorization_spec.rb +0 -290
  297. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -77
  298. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -58
  299. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -85
  300. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -32
  301. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -29
  302. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -35
  303. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -65
  304. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  305. data/spec/models/spree/return_item_spec.rb +0 -775
  306. data/spec/models/spree/returns_calculator_spec.rb +0 -14
  307. data/spec/models/spree/shipment_spec.rb +0 -709
  308. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  309. data/spec/models/spree/shipping_method_spec.rb +0 -88
  310. data/spec/models/spree/shipping_rate_spec.rb +0 -142
  311. data/spec/models/spree/state_spec.rb +0 -14
  312. data/spec/models/spree/stock/availability_validator_spec.rb +0 -83
  313. data/spec/models/spree/stock/coordinator_spec.rb +0 -116
  314. data/spec/models/spree/stock/differentiator_spec.rb +0 -39
  315. data/spec/models/spree/stock/estimator_spec.rb +0 -146
  316. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -38
  317. data/spec/models/spree/stock/package_spec.rb +0 -163
  318. data/spec/models/spree/stock/packer_spec.rb +0 -91
  319. data/spec/models/spree/stock/prioritizer_spec.rb +0 -125
  320. data/spec/models/spree/stock/quantifier_spec.rb +0 -115
  321. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -29
  322. data/spec/models/spree/stock/splitter/base_spec.rb +0 -21
  323. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -50
  324. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -29
  325. data/spec/models/spree/stock_item_spec.rb +0 -426
  326. data/spec/models/spree/stock_location_spec.rb +0 -279
  327. data/spec/models/spree/stock_movement_spec.rb +0 -56
  328. data/spec/models/spree/stock_transfer_spec.rb +0 -290
  329. data/spec/models/spree/store_credit_category_spec.rb +0 -17
  330. data/spec/models/spree/store_credit_event_spec.rb +0 -314
  331. data/spec/models/spree/store_credit_spec.rb +0 -876
  332. data/spec/models/spree/store_spec.rb +0 -55
  333. data/spec/models/spree/tax_category_spec.rb +0 -27
  334. data/spec/models/spree/tax_rate_spec.rb +0 -378
  335. data/spec/models/spree/taxon_spec.rb +0 -74
  336. data/spec/models/spree/taxonomy_spec.rb +0 -18
  337. data/spec/models/spree/tracker_spec.rb +0 -21
  338. data/spec/models/spree/transfer_item_spec.rb +0 -264
  339. data/spec/models/spree/unit_cancel_spec.rb +0 -148
  340. data/spec/models/spree/user_spec.rb +0 -223
  341. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -23
  342. data/spec/models/spree/variant/scopes_spec.rb +0 -55
  343. data/spec/models/spree/variant_spec.rb +0 -546
  344. data/spec/models/spree/zone_spec.rb +0 -305
  345. data/spec/spec_helper.rb +0 -78
  346. data/spec/support/big_decimal.rb +0 -5
  347. data/spec/support/concerns/default_price.rb +0 -34
  348. data/spec/support/dummy_ability.rb +0 -4
  349. data/spec/support/test_gateway.rb +0 -2
@@ -41,7 +41,7 @@ module Spree
41
41
  promotion_adjustments = adjustments.select(&:promotion?)
42
42
  promotion_adjustments.each(&:update!)
43
43
 
44
- promo_total = PromotionChooser.new(promotion_adjustments).update
44
+ promo_total = Spree::Config.promotion_chooser_class.new(promotion_adjustments).update
45
45
 
46
46
  # Calculating the totals for the order here would be incorrect. Order's
47
47
  # totals are the sum of the adjustments on all child models, as well as
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- class LineItemAction < ActiveRecord::Base
2
+ class LineItemAction < Spree::Base
3
3
  belongs_to :line_item
4
4
  belongs_to :action, class_name: "Spree::PromotionAction"
5
5
  end
@@ -17,14 +17,15 @@ module Spree
17
17
  validates :name, presence: true, uniqueness: true
18
18
  validates :presentation, presence: true
19
19
 
20
- default_scope -> { order("#{self.table_name}.position") }
20
+ default_scope -> { order(:position) }
21
21
 
22
22
  accepts_nested_attributes_for :option_values, reject_if: lambda { |ov| ov[:name].blank? || ov[:presentation].blank? }, allow_destroy: true
23
23
 
24
24
  after_touch :touch_all_products
25
+ after_save :touch_all_products
25
26
 
26
27
  def touch_all_products
27
- products.update_all(updated_at: Time.current)
28
+ products.find_each(&:touch)
28
29
  end
29
30
  end
30
31
  end
@@ -9,7 +9,7 @@ module Spree
9
9
  validates :name, presence: true, uniqueness: { scope: :option_type_id }
10
10
  validates :presentation, presence: true
11
11
 
12
- after_save :touch
12
+ after_save :touch, if: :changed?
13
13
  after_touch :touch_all_variants
14
14
 
15
15
  self.whitelisted_ransackable_attributes = ['presentation']
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- class OptionValuesVariant < ActiveRecord::Base
2
+ class OptionValuesVariant < Spree::Base
3
3
  belongs_to :variant
4
4
  belongs_to :option_value
5
5
  end
@@ -48,11 +48,11 @@ module Spree
48
48
 
49
49
  belongs_to :store, class_name: 'Spree::Store'
50
50
  has_many :state_changes, as: :stateful
51
- has_many :line_items, -> { order('created_at', 'id') }, dependent: :destroy, inverse_of: :order
51
+ has_many :line_items, -> { order(:created_at, :id) }, dependent: :destroy, inverse_of: :order
52
52
  has_many :payments, dependent: :destroy
53
53
  has_many :return_authorizations, dependent: :destroy, inverse_of: :order
54
54
  has_many :reimbursements, inverse_of: :order
55
- has_many :adjustments, -> { order("#{Adjustment.table_name}.created_at ASC") }, as: :adjustable, inverse_of: :adjustable, dependent: :destroy
55
+ has_many :adjustments, -> { order(:created_at) }, as: :adjustable, inverse_of: :adjustable, dependent: :destroy
56
56
  has_many :line_item_adjustments, through: :line_items, source: :adjustments
57
57
  has_many :shipment_adjustments, through: :shipments, source: :adjustments
58
58
  has_many :inventory_units, inverse_of: :order
@@ -82,7 +82,7 @@ module Spree
82
82
  # Needs to happen before save_permalink is called
83
83
  before_validation :set_currency
84
84
  before_validation :generate_order_number, on: :create
85
- before_validation :clone_billing_address, if: :use_billing?
85
+ before_validation :assign_billing_to_shipping_address, if: :use_billing?
86
86
  attr_accessor :use_billing
87
87
 
88
88
 
@@ -93,7 +93,6 @@ module Spree
93
93
  validates :email, presence: true, if: :require_email
94
94
  validates :email, email: true, if: :require_email, allow_blank: true
95
95
  validates :number, presence: true, uniqueness: { allow_blank: true }
96
- validate :has_available_shipment
97
96
 
98
97
  make_permalink field: :number
99
98
 
@@ -191,6 +190,7 @@ module Spree
191
190
  end
192
191
 
193
192
  def confirmation_required?
193
+ ActiveSupport::Deprecation.warn "Order#confirmation_required is deprecated.", caller
194
194
  true
195
195
  end
196
196
 
@@ -217,12 +217,8 @@ module Spree
217
217
  updater.update
218
218
  end
219
219
 
220
- def clone_billing_address
221
- if bill_address and self.ship_address.nil?
222
- self.ship_address = bill_address.dup
223
- else
224
- self.ship_address.attributes = bill_address.attributes.except('id', 'updated_at', 'created_at')
225
- end
220
+ def assign_billing_to_shipping_address
221
+ self.ship_address = bill_address if bill_address
226
222
  true
227
223
  end
228
224
 
@@ -272,7 +268,7 @@ module Spree
272
268
 
273
269
  self.number ||= loop do
274
270
  # Make a random number.
275
- random = "#{options[:prefix]}#{(0...options[:length]).map { possible.shuffle.first }.join}"
271
+ random = "#{options[:prefix]}#{(0...options[:length]).map { possible.sample }.join}"
276
272
  # Use the random number if no other order exists with it.
277
273
  if self.class.exists?(number: random)
278
274
  # If over half of all possible options are taken add another digit.
@@ -330,10 +326,14 @@ module Spree
330
326
  end
331
327
 
332
328
  def outstanding_balance
329
+ # If reimbursement has happened add it back to total to prevent balance_due payment state
330
+ # See: https://github.com/spree/spree/issues/6229
331
+ adjusted_payment_total = payment_total + refund_total
332
+
333
333
  if state == 'canceled'
334
- -1 * payment_total
334
+ -1 * adjusted_payment_total
335
335
  else
336
- total - payment_total
336
+ total - adjusted_payment_total
337
337
  end
338
338
  end
339
339
 
@@ -341,6 +341,10 @@ module Spree
341
341
  self.outstanding_balance != 0
342
342
  end
343
343
 
344
+ def refund_total
345
+ payments.flat_map(&:refunds).sum(&:amount)
346
+ end
347
+
344
348
  def name
345
349
  if (address = bill_address || ship_address)
346
350
  "#{address.firstname} #{address.lastname}"
@@ -365,7 +369,7 @@ module Spree
365
369
  # Called after transition to complete state when payments will have been processed
366
370
  def finalize!
367
371
  # lock all adjustments (coupon promotions, etc.)
368
- all_adjustments.each{|a| a.close}
372
+ all_adjustments.each(&:finalize!)
369
373
 
370
374
  # update payment and shipment(s) states, and save
371
375
  updater.update_payment_state
@@ -390,7 +394,7 @@ module Spree
390
394
  end
391
395
 
392
396
  def deliver_order_confirmation_email
393
- OrderMailer.confirm_email(self.id).deliver_now
397
+ OrderMailer.confirm_email(self).deliver_later
394
398
  update_column(:confirmation_delivered, true)
395
399
  end
396
400
 
@@ -400,7 +404,10 @@ module Spree
400
404
  end
401
405
 
402
406
  def available_payment_methods
403
- @available_payment_methods ||= (PaymentMethod.available(:front_end) + PaymentMethod.available(:both)).uniq
407
+ @available_payment_methods ||= (
408
+ PaymentMethod.available(:front_end, store: store) +
409
+ PaymentMethod.available(:both, store: store)
410
+ ).uniq
404
411
  end
405
412
 
406
413
  def billing_firstname
@@ -509,6 +516,8 @@ module Spree
509
516
  end
510
517
 
511
518
  def create_proposed_shipments
519
+ return self.shipments if unreturned_exchange?
520
+
512
521
  if completed?
513
522
  raise CannotRebuildShipments.new(Spree.t(:cannot_rebuild_shipments_order_completed))
514
523
  elsif shipments.any? { |s| !s.pending? }
@@ -556,7 +565,7 @@ module Spree
556
565
  end
557
566
 
558
567
  def shipping_eq_billing_address?
559
- (bill_address.empty? && ship_address.empty?) || bill_address.same_as?(ship_address)
568
+ bill_address == ship_address
560
569
  end
561
570
 
562
571
  def set_shipments_cost
@@ -587,19 +596,6 @@ module Spree
587
596
  !approved?
588
597
  end
589
598
 
590
- # moved from api order_decorator. This is a better place for it.
591
- def update_line_items(line_item_params)
592
- return if line_item_params.blank?
593
- line_item_params.each_value do |attributes|
594
- if attributes[:id].present?
595
- self.line_items.find(attributes[:id]).update_attributes!(attributes)
596
- else
597
- self.line_items.create!(attributes)
598
- end
599
- end
600
- self.ensure_updated_shipments
601
- end
602
-
603
599
  def reload(options=nil)
604
600
  remove_instance_variable(:@tax_zone) if defined?(@tax_zone)
605
601
  super
@@ -713,23 +709,6 @@ module Spree
713
709
  Spree::Money.new(total_available_store_credit - total_applicable_store_credit, { currency: currency })
714
710
  end
715
711
 
716
- def payments_attributes=(attributes)
717
- validate_payments_attributes(attributes)
718
- super(attributes)
719
- end
720
-
721
- def validate_payments_attributes(attributes)
722
- attributes = Array.wrap(attributes)
723
- # Ensure the payment methods specified are allowed for this user
724
- payment_methods = Spree::PaymentMethod.where(id: available_payment_methods)
725
- attributes.each do |payment_attributes|
726
- payment_method_id = payment_attributes[:payment_method_id]
727
-
728
- # raise RecordNotFound unless it is an allowed payment method
729
- payment_methods.find(payment_method_id) if payment_method_id
730
- end
731
- end
732
-
733
712
  private
734
713
 
735
714
  def link_by_email
@@ -770,18 +749,11 @@ module Spree
770
749
  end
771
750
  end
772
751
 
773
- def has_available_shipment
774
- return unless has_step?("delivery")
775
- return unless has_step?(:address) && address?
776
- return unless ship_address && ship_address.valid?
777
- # errors.add(:base, :no_shipping_methods_available) if available_shipping_methods.empty?
778
- end
779
-
780
752
  def ensure_available_shipping_rates
781
753
  if shipments.empty? || shipments.any? { |shipment| shipment.shipping_rates.blank? }
782
754
  # After this point, order redirects back to 'address' state and asks user to pick a proper address
783
755
  # Therefore, shipments are not necessary at this point.
784
- shipments.delete_all
756
+ shipments.destroy_all
785
757
  errors.add(:base, Spree.t(:items_cannot_be_shipped)) and return false
786
758
  end
787
759
  end
@@ -796,7 +768,7 @@ module Spree
796
768
  end
797
769
 
798
770
  def send_cancel_email
799
- OrderMailer.cancel_email(self.id).deliver_now
771
+ OrderMailer.cancel_email(self).deliver_later
800
772
  end
801
773
 
802
774
  def after_resume
@@ -67,6 +67,10 @@ module Spree
67
67
  transition to: :awaiting_return
68
68
  end
69
69
 
70
+ event :complete do
71
+ transition to: :complete, from: :confirm
72
+ end
73
+
70
74
  if states[:payment]
71
75
  event :payment_failed do
72
76
  transition to: :payment, from: :confirm
@@ -81,11 +85,6 @@ module Spree
81
85
 
82
86
  # see also process_payments_before_complete below which needs to
83
87
  # be added in the correct sequence.
84
-
85
- event :complete do
86
- transition to: :complete, from: :confirm
87
- transition to: :complete, from: :payment
88
- end
89
88
  end
90
89
 
91
90
  before_transition from: :cart, do: :ensure_line_items_present
@@ -274,12 +273,21 @@ module Spree
274
273
  success
275
274
  end
276
275
 
276
+ def bill_address_attributes=(attributes)
277
+ self.bill_address = Address.immutable_merge(bill_address, attributes)
278
+ end
279
+
280
+ def ship_address_attributes=(attributes)
281
+ self.ship_address = Address.immutable_merge(ship_address, attributes)
282
+ end
283
+
277
284
  def assign_default_addresses!
278
285
  if self.user
279
- self.bill_address = user.bill_address.try!(:dup) if !self.bill_address_id && user.bill_address.try!(:valid?)
286
+ # this is one of 2 places still using User#bill_address
287
+ self.bill_address ||= user.bill_address if user.bill_address.try!(:valid?)
280
288
  # Skip setting ship address if order doesn't have a delivery checkout step
281
289
  # to avoid triggering validations on shipping address
282
- self.ship_address = user.ship_address.try!(:dup) if !self.ship_address_id && user.ship_address.try!(:valid?) && self.checkout_steps.include?("delivery")
290
+ self.ship_address ||= user.ship_address if user.ship_address.try!(:valid?) && self.checkout_steps.include?("delivery")
283
291
  end
284
292
  end
285
293
 
@@ -292,6 +300,7 @@ module Spree
292
300
  def persist_user_credit_card
293
301
  if !self.temporary_credit_card && self.user_id && self.valid_credit_cards.present?
294
302
  default_cc = self.valid_credit_cards.first
303
+ # TODO target for refactoring -- why is order checkout responsible for the user -> credit_card relationship?
295
304
  default_cc.user_id = self.user_id
296
305
  default_cc.default = true
297
306
  default_cc.save
@@ -302,7 +311,8 @@ module Spree
302
311
  if self.payments.from_credit_card.count == 0 && self.user && self.user.default_credit_card.try(:valid?)
303
312
  cc = self.user.default_credit_card
304
313
  self.payments.create!(payment_method_id: cc.payment_method_id, source: cc)
305
- self.bill_address ||= self.user.bill_address.try!(:dup) if self.user.bill_address.try!(:valid?)
314
+ # this is one of 2 places still using User#bill_address
315
+ self.bill_address ||= user.default_credit_card.address || user.bill_address
306
316
  end
307
317
  end
308
318
 
@@ -326,10 +336,6 @@ module Spree
326
336
  end
327
337
  end
328
338
 
329
- # For payment step, filter order parameters to produce the expected nested
330
- # attributes for a single payment and its source, discarding attributes
331
- # for payment methods other than the one selected
332
- #
333
339
  # In case a existing credit card is provided it needs to build the payment
334
340
  # attributes from scratch so we can set the amount. example payload:
335
341
  #
@@ -340,14 +346,6 @@ module Spree
340
346
  # }
341
347
  #
342
348
  def update_params_payment_source
343
- if @updating_params[:payment_source].present?
344
- source_params = @updating_params.delete(:payment_source)[@updating_params[:order][:payments_attributes].first[:payment_method_id].to_s]
345
-
346
- if source_params
347
- @updating_params[:order][:payments_attributes].first[:source_attributes] = source_params
348
- end
349
- end
350
-
351
349
  if @updating_params[:order] && (@updating_params[:order][:payments_attributes] || @updating_params[:order][:existing_card])
352
350
  @updating_params[:order][:payments_attributes] ||= [{}]
353
351
  @updating_params[:order][:payments_attributes].first[:amount] = self.total
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- class OrderMutex < ActiveRecord::Base
2
+ class OrderMutex < Spree::Base
3
3
 
4
4
  class LockFailed < StandardError; end
5
5
 
@@ -3,7 +3,7 @@ module Spree
3
3
  #
4
4
  # 1. A promotion that a user attempted to apply to their order
5
5
  # 2. The specific code that they used
6
- class OrderPromotion < ActiveRecord::Base
6
+ class OrderPromotion < Spree::Base
7
7
  self.table_name = 'spree_orders_promotions'
8
8
 
9
9
  belongs_to :order, class_name: 'Spree::Order'
@@ -72,9 +72,9 @@ class Spree::OrderShipping
72
72
  end
73
73
  end
74
74
 
75
- send_shipment_email(carton) if stock_location.fulfillable? && !suppress_mailer # e.g. digital gift cards that aren't actually shipped
75
+ send_shipment_emails(carton) if stock_location.fulfillable? && !suppress_mailer # e.g. digital gift cards that aren't actually shipped
76
76
  fulfill_order_stock_locations(stock_location)
77
- update_order_state
77
+ @order.update!
78
78
 
79
79
  carton
80
80
  end
@@ -85,15 +85,9 @@ class Spree::OrderShipping
85
85
  Spree::OrderStockLocation.fulfill_for_order_with_stock_location(@order, stock_location)
86
86
  end
87
87
 
88
- def update_order_state
89
- new_state = Spree::OrderUpdater.new(@order).update_shipment_state
90
- @order.update_columns(
91
- shipment_state: new_state,
92
- updated_at: Time.now,
93
- )
94
- end
95
-
96
- def send_shipment_email(carton)
97
- Spree::CartonMailer.shipped_email(carton.id).deliver_now
88
+ def send_shipment_emails(carton)
89
+ carton.orders.each do |order|
90
+ Spree::CartonMailer.shipped_email(order: order, carton: carton).deliver_later
91
+ end
98
92
  end
99
93
  end
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- class OrderStockLocation < ActiveRecord::Base
2
+ class OrderStockLocation < Spree::Base
3
3
  belongs_to :variant, class_name: "Spree::Variant"
4
4
  belongs_to :stock_location, class_name: "Spree::StockLocation"
5
5
  belongs_to :order, class_name: "Spree::Order"
@@ -35,9 +35,8 @@ module Spree
35
35
 
36
36
  validates :amount, numericality: true
37
37
  validates :source, presence: true, if: :source_required?
38
- validates :payment_method, presence: true
39
38
 
40
- default_scope -> { order("#{self.table_name}.created_at") }
39
+ default_scope -> { order(:created_at) }
41
40
 
42
41
  scope :from_credit_card, -> { where(source_type: 'Spree::CreditCard') }
43
42
  scope :with_state, ->(s) { where(state: s.to_s) }
@@ -244,18 +243,8 @@ module Spree
244
243
  end
245
244
 
246
245
  def update_order
247
- if completed? || void?
248
- order.updater.update_payment_total
249
- end
250
-
251
- if order.completed?
252
- order.updater.update_payment_state
253
- order.updater.update_shipments
254
- order.updater.update_shipment_state
255
- end
256
-
257
- if self.completed? || order.completed?
258
- order.persist_totals
246
+ if order.completed? || completed? || void?
247
+ order.update!
259
248
  end
260
249
  end
261
250
 
@@ -51,7 +51,6 @@ module Spree
51
51
  amount ||= money.money.cents
52
52
  started_processing!
53
53
  protect_from_connection_error do
54
- check_environment
55
54
  # Standard ActiveMerchant capture usage
56
55
  response = payment_method.capture(
57
56
  amount,
@@ -68,7 +67,6 @@ module Spree
68
67
  def void_transaction!
69
68
  return true if void?
70
69
  protect_from_connection_error do
71
- check_environment
72
70
 
73
71
  if payment_method.payment_profiles_supported?
74
72
  # Gateways supporting payment profiles will need access to credit card object because this stores the payment profile information
@@ -106,8 +104,13 @@ module Spree
106
104
  :discount => order.promo_total * 100,
107
105
  :currency => currency })
108
106
 
109
- options.merge!({ :billing_address => order.bill_address.try(:active_merchant_hash),
110
- :shipping_address => order.ship_address.try(:active_merchant_hash) })
107
+ bill_address = source.try(:address)
108
+ bill_address ||= order.bill_address
109
+
110
+ options.merge!(
111
+ billing_address: bill_address.try!(:active_merchant_hash),
112
+ shipping_address: order.ship_address.try!(:active_merchant_hash),
113
+ )
111
114
 
112
115
  options
113
116
  end
@@ -150,8 +153,6 @@ module Spree
150
153
 
151
154
  def gateway_action(source, action, success_state)
152
155
  protect_from_connection_error do
153
- check_environment
154
-
155
156
  response = payment_method.send(action, money.money.cents,
156
157
  source,
157
158
  gateway_options)
@@ -215,14 +216,6 @@ module Spree
215
216
  raise Core::GatewayError.new(text)
216
217
  end
217
218
 
218
- # Saftey check to make sure we're not accidentally performing operations on a live gateway.
219
- # Ex. When testing in staging environment with a copy of production data.
220
- def check_environment
221
- return if payment_method.environment == Rails.env
222
- message = Spree.t(:gateway_config_unavailable) + " - #{Rails.env}"
223
- raise Core::GatewayError.new(message)
224
- end
225
-
226
219
  # The unique identifier to be passed in to the payment gateway
227
220
  def gateway_order_id
228
221
  "#{order.number}-#{self.identifier}"