solidus_core 2.3.1 → 2.4.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 (799) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/base_controller.rb +0 -1
  3. data/app/models/concerns/spree/calculated_adjustments.rb +2 -0
  4. data/app/models/concerns/spree/user_methods.rb +19 -3
  5. data/app/models/spree/address.rb +5 -11
  6. data/app/models/spree/adjustment.rb +10 -1
  7. data/app/models/spree/base.rb +4 -0
  8. data/app/models/spree/calculator/default_tax.rb +7 -18
  9. data/app/models/spree/calculator/returns/default_refund_amount.rb +3 -3
  10. data/app/models/spree/calculator.rb +2 -3
  11. data/app/models/spree/customer_return.rb +6 -3
  12. data/app/models/spree/exchange.rb +1 -1
  13. data/app/models/spree/fulfilment_changer.rb +125 -0
  14. data/app/models/spree/legacy_user.rb +0 -8
  15. data/app/models/spree/line_item.rb +24 -7
  16. data/app/models/spree/order/checkout.rb +2 -2
  17. data/app/models/spree/order.rb +42 -47
  18. data/app/models/spree/order_cancellations.rb +1 -1
  19. data/app/models/spree/order_capturing.rb +2 -0
  20. data/app/models/spree/order_shipping.rb +1 -1
  21. data/app/models/spree/order_update_attributes.rb +0 -2
  22. data/app/models/spree/order_updater.rb +4 -4
  23. data/app/models/spree/payment/cancellation.rb +60 -0
  24. data/app/models/spree/payment/processing.rb +1 -2
  25. data/app/models/spree/payment.rb +4 -7
  26. data/app/models/spree/payment_method/bogus_credit_card.rb +2 -1
  27. data/app/models/spree/payment_method/check.rb +1 -2
  28. data/app/models/spree/payment_method/store_credit.rb +4 -3
  29. data/app/models/spree/payment_method.rb +19 -2
  30. data/app/models/spree/promotion.rb +1 -1
  31. data/app/models/spree/promotion_action.rb +2 -1
  32. data/app/models/spree/promotion_handler/coupon.rb +1 -1
  33. data/app/models/spree/promotion_handler/free_shipping.rb +6 -58
  34. data/app/models/spree/promotion_handler/shipping.rb +55 -0
  35. data/app/models/spree/refund.rb +4 -2
  36. data/app/models/spree/reimbursement/credit.rb +17 -15
  37. data/app/models/spree/return_authorization.rb +8 -5
  38. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +19 -15
  39. data/app/models/spree/return_item/eligibility_validator/default.rb +25 -21
  40. data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +15 -11
  41. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +16 -11
  42. data/app/models/spree/return_item/eligibility_validator/order_completed.rb +15 -11
  43. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +15 -11
  44. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +15 -11
  45. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +37 -35
  46. data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +6 -4
  47. data/app/models/spree/return_item.rb +6 -3
  48. data/app/models/spree/shipment.rb +63 -45
  49. data/app/models/spree/shipping_method.rb +1 -1
  50. data/app/models/spree/shipping_rate.rb +2 -0
  51. data/app/models/spree/shipping_rate_tax.rb +1 -5
  52. data/app/models/spree/stock/availability.rb +70 -0
  53. data/app/models/spree/stock/estimator.rb +1 -1
  54. data/app/models/spree/stock/simple_coordinator.rb +105 -0
  55. data/app/models/spree/stock/splitter/base.rb +8 -4
  56. data/app/models/spree/stock/splitter/weight.rb +0 -2
  57. data/app/models/spree/stock/splitter_chain.rb +32 -0
  58. data/app/models/spree/stock_quantities.rb +81 -0
  59. data/app/models/spree/store_credit.rb +7 -15
  60. data/app/models/spree/store_credit_category.rb +1 -1
  61. data/app/models/spree/store_credit_type.rb +3 -1
  62. data/app/models/spree/tax/tax_helpers.rb +3 -35
  63. data/app/models/spree/tax_rate.rb +2 -5
  64. data/app/models/spree/taxon.rb +2 -0
  65. data/app/models/spree/zone.rb +1 -50
  66. data/app/views/spree/order_mailer/confirm_email.html.erb +1 -1
  67. data/app/views/spree/order_mailer/confirm_email.text.erb +1 -1
  68. data/config/locales/en.yml +77 -45
  69. data/db/default/spree/countries.rb +40 -10
  70. data/db/default/spree/store_credit.rb +2 -2
  71. data/db/migrate/20160101010000_solidus_one_four.rb +1153 -0
  72. data/db/migrate/20170831201542_remove_default_tax_from_spree_zones.rb +5 -0
  73. data/db/seeds.rb +15 -2
  74. data/lib/generators/spree/dummy/templates/rails/database.yml +4 -0
  75. data/lib/generators/spree/install/install_generator.rb +0 -1
  76. data/lib/generators/spree/install/templates/config/initializers/spree.rb +0 -12
  77. data/{app/models → lib}/spree/app_configuration.rb +26 -59
  78. data/lib/spree/config.rb +3 -0
  79. data/lib/spree/core/controller_helpers/order.rb +0 -2
  80. data/lib/spree/core/engine.rb +6 -1
  81. data/lib/spree/core/environment.rb +3 -1
  82. data/lib/spree/core/search/base.rb +13 -5
  83. data/lib/spree/core/search/variant.rb +2 -0
  84. data/lib/spree/core/stock_configuration.rb +1 -1
  85. data/lib/spree/core/version.rb +1 -1
  86. data/lib/spree/core.rb +8 -7
  87. data/lib/spree/deprecation.rb +2 -0
  88. data/lib/spree/i18n.rb +1 -0
  89. data/lib/spree/money.rb +2 -0
  90. data/lib/spree/permission_sets/product_management.rb +6 -5
  91. data/{app/models → lib}/spree/preferences/configuration.rb +29 -2
  92. data/lib/spree/preferences/preferable.rb +142 -0
  93. data/{app/models → lib}/spree/preferences/preferable_class_methods.rb +0 -0
  94. data/{app/models → lib}/spree/preferences/scoped_store.rb +0 -0
  95. data/{app/models → lib}/spree/preferences/static_model_preferences.rb +0 -0
  96. data/{app/models → lib}/spree/preferences/statically_configurable.rb +0 -0
  97. data/{app/models → lib}/spree/preferences/store.rb +0 -0
  98. data/lib/spree/promo/environment.rb +1 -0
  99. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  100. data/lib/spree/testing_support/factories/address_factory.rb +2 -3
  101. data/lib/spree/testing_support/factories/adjustment_factory.rb +2 -2
  102. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
  103. data/lib/spree/testing_support/factories/calculator_factory.rb +6 -6
  104. data/lib/spree/testing_support/factories/carton_factory.rb +1 -1
  105. data/lib/spree/testing_support/factories/country_factory.rb +1 -1
  106. data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
  107. data/lib/spree/testing_support/factories/customer_return_factory.rb +1 -1
  108. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  109. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +1 -1
  110. data/lib/spree/testing_support/factories/line_item_factory.rb +1 -1
  111. data/lib/spree/testing_support/factories/option_type_factory.rb +1 -1
  112. data/lib/spree/testing_support/factories/option_value_factory.rb +1 -1
  113. data/lib/spree/testing_support/factories/order_factory.rb +2 -2
  114. data/lib/spree/testing_support/factories/order_promotion_factory.rb +1 -1
  115. data/lib/spree/testing_support/factories/payment_factory.rb +3 -3
  116. data/lib/spree/testing_support/factories/payment_method_factory.rb +4 -4
  117. data/lib/spree/testing_support/factories/price_factory.rb +1 -1
  118. data/lib/spree/testing_support/factories/product_factory.rb +1 -1
  119. data/lib/spree/testing_support/factories/product_option_type_factory.rb +1 -1
  120. data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
  121. data/lib/spree/testing_support/factories/promotion_category_factory.rb +1 -1
  122. data/lib/spree/testing_support/factories/promotion_factory.rb +1 -1
  123. data/lib/spree/testing_support/factories/property_factory.rb +1 -1
  124. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  125. data/lib/spree/testing_support/factories/refund_reason_factory.rb +1 -1
  126. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  127. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +1 -1
  128. data/lib/spree/testing_support/factories/return_authorization_factory.rb +2 -2
  129. data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
  130. data/lib/spree/testing_support/factories/return_reason_factory.rb +1 -1
  131. data/lib/spree/testing_support/factories/role_factory.rb +1 -1
  132. data/lib/spree/testing_support/factories/shipment_factory.rb +1 -1
  133. data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
  134. data/lib/spree/testing_support/factories/shipping_method_factory.rb +3 -3
  135. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +1 -1
  136. data/lib/spree/testing_support/factories/state_factory.rb +1 -1
  137. data/lib/spree/testing_support/factories/stock_item_factory.rb +1 -1
  138. data/lib/spree/testing_support/factories/stock_location_factory.rb +1 -1
  139. data/lib/spree/testing_support/factories/stock_movement_factory.rb +1 -1
  140. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
  141. data/lib/spree/testing_support/factories/stock_transfer_factory.rb +1 -1
  142. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +1 -1
  143. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +2 -2
  144. data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
  145. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +3 -3
  146. data/lib/spree/testing_support/factories/store_credit_update_reason_factory.rb +1 -1
  147. data/lib/spree/testing_support/factories/store_factory.rb +1 -1
  148. data/lib/spree/testing_support/factories/tax_category_factory.rb +1 -1
  149. data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -1
  150. data/lib/spree/testing_support/factories/taxon_factory.rb +1 -1
  151. data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -1
  152. data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
  153. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +1 -1
  154. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +1 -1
  155. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +1 -1
  156. data/lib/spree/testing_support/factories/zone_factory.rb +2 -2
  157. data/lib/spree/testing_support/preferences.rb +1 -2
  158. data/lib/spree/testing_support/sequences.rb +6 -1
  159. data/lib/tasks/core.rake +17 -10
  160. data/solidus_core.gemspec +0 -6
  161. data/spec/helpers/base_helper_spec.rb +2 -2
  162. data/spec/helpers/products_helper_spec.rb +2 -2
  163. data/spec/helpers/taxons_helper_spec.rb +2 -2
  164. data/spec/jobs/promotion_code_batch_job_spec.rb +2 -2
  165. data/spec/lib/calculated_adjustments_spec.rb +2 -2
  166. data/spec/lib/i18n_spec.rb +2 -2
  167. data/spec/lib/search/base_spec.rb +10 -8
  168. data/spec/lib/search/variant_spec.rb +2 -2
  169. data/spec/lib/spree/core/class_constantizer_spec.rb +2 -1
  170. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +2 -2
  171. data/spec/lib/spree/core/controller_helpers/order_spec.rb +2 -2
  172. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +2 -2
  173. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +2 -2
  174. data/spec/lib/spree/core/controller_helpers/search_spec.rb +2 -2
  175. data/spec/lib/spree/core/controller_helpers/store_spec.rb +2 -2
  176. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +2 -2
  177. data/spec/lib/spree/core/current_store_spec.rb +2 -2
  178. data/spec/lib/spree/core/environment_extension_spec.rb +2 -1
  179. data/spec/lib/spree/core/importer/order_spec.rb +2 -2
  180. data/spec/lib/spree/core/role_configuration_spec.rb +2 -2
  181. data/spec/lib/spree/core/stock_configuration_spec.rb +2 -2
  182. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +1 -1
  183. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +1 -1
  184. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +1 -1
  185. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +1 -1
  186. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +1 -1
  187. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +1 -1
  188. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +1 -1
  189. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +1 -1
  190. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +1 -1
  191. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +1 -1
  192. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +1 -1
  193. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +1 -1
  194. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +1 -1
  195. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +2 -2
  196. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +1 -1
  197. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +1 -1
  198. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +1 -1
  199. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +1 -1
  200. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +1 -1
  201. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +1 -1
  202. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +1 -1
  203. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +1 -1
  204. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +1 -1
  205. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +1 -1
  206. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +1 -1
  207. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +1 -1
  208. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +1 -1
  209. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +1 -1
  210. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +1 -1
  211. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +1 -1
  212. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +1 -1
  213. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +1 -1
  214. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +1 -1
  215. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +1 -1
  216. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +1 -1
  217. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +10 -1
  218. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +1 -1
  219. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +1 -1
  220. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +1 -1
  221. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +1 -1
  222. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +1 -1
  223. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +1 -1
  224. data/spec/lib/spree/core/testing_support/factories/stock_transfer_factory_spec.rb +1 -1
  225. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +1 -1
  226. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +1 -1
  227. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +1 -1
  228. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +1 -1
  229. data/spec/lib/spree/core/testing_support/factories/store_credit_update_reason_factory_spec.rb +1 -1
  230. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +1 -1
  231. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +1 -1
  232. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +1 -1
  233. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +1 -1
  234. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +1 -1
  235. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +1 -1
  236. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +1 -1
  237. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +1 -1
  238. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +1 -1
  239. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +1 -1
  240. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +1 -1
  241. data/spec/lib/spree/core/testing_support/preferences_spec.rb +1 -1
  242. data/spec/lib/spree/core/validators/email_spec.rb +3 -2
  243. data/spec/lib/spree/core/version_spec.rb +1 -1
  244. data/spec/lib/spree/localized_number_spec.rb +2 -1
  245. data/spec/lib/spree/migrations_spec.rb +2 -2
  246. data/spec/lib/spree/money_spec.rb +3 -1
  247. data/spec/lib/spree/permission_sets/default_customer_spec.rb +2 -2
  248. data/spec/lib/tasks/dummy_task_spec.rb +2 -2
  249. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +2 -2
  250. data/spec/mailers/carton_mailer_spec.rb +2 -2
  251. data/spec/mailers/order_mailer_spec.rb +2 -2
  252. data/spec/mailers/promotion_code_batch_mailer_spec.rb +2 -2
  253. data/spec/mailers/reimbursement_mailer_spec.rb +2 -2
  254. data/spec/mailers/test_mailer_spec.rb +2 -2
  255. data/spec/models/spree/ability_spec.rb +2 -2
  256. data/spec/models/spree/address_spec.rb +2 -37
  257. data/spec/models/spree/adjustment_reason_spec.rb +2 -2
  258. data/spec/models/spree/adjustment_spec.rb +4 -4
  259. data/spec/models/spree/app_configuration_spec.rb +2 -2
  260. data/spec/models/spree/asset_spec.rb +2 -2
  261. data/spec/models/spree/calculator/default_tax_spec.rb +21 -56
  262. data/spec/models/spree/calculator/distributed_amount_spec.rb +2 -2
  263. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +2 -2
  264. data/spec/models/spree/calculator/flat_rate_spec.rb +2 -2
  265. data/spec/models/spree/calculator/flexi_rate_spec.rb +2 -2
  266. data/spec/models/spree/calculator/free_shipping_spec.rb +2 -2
  267. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +2 -2
  268. data/spec/models/spree/calculator/percent_per_item_spec.rb +2 -2
  269. data/spec/models/spree/calculator/price_sack_spec.rb +2 -2
  270. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +2 -2
  271. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +2 -2
  272. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +2 -2
  273. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +2 -2
  274. data/spec/models/spree/calculator/shipping/per_item_spec.rb +2 -2
  275. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +2 -2
  276. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +2 -2
  277. data/spec/models/spree/calculator/tiered_percent_spec.rb +2 -2
  278. data/spec/models/spree/calculator_spec.rb +12 -2
  279. data/spec/models/spree/carton_spec.rb +2 -2
  280. data/spec/models/spree/classification_spec.rb +2 -2
  281. data/spec/models/spree/concerns/display_money_spec.rb +2 -2
  282. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +2 -2
  283. data/spec/models/spree/concerns/user_address_book_spec.rb +26 -26
  284. data/spec/models/spree/concerns/user_methods_spec.rb +80 -2
  285. data/spec/models/spree/country_spec.rb +2 -2
  286. data/spec/models/spree/credit_card_spec.rb +2 -2
  287. data/spec/models/spree/customer_return_spec.rb +2 -2
  288. data/spec/models/spree/distributed_amounts_handler_spec.rb +1 -1
  289. data/spec/models/spree/exchange_spec.rb +2 -2
  290. data/spec/models/spree/fulfilment_changer_spec.rb +273 -0
  291. data/spec/models/spree/gateway/bogus_simple.rb +2 -2
  292. data/spec/models/spree/gateway/bogus_spec.rb +2 -2
  293. data/spec/models/spree/gateway_spec.rb +2 -2
  294. data/spec/models/spree/image_spec.rb +2 -2
  295. data/spec/models/spree/inventory_unit_spec.rb +3 -3
  296. data/spec/models/spree/line_item_spec.rb +23 -6
  297. data/spec/models/spree/option_type_spec.rb +2 -2
  298. data/spec/models/spree/option_value_spec.rb +2 -2
  299. data/spec/models/spree/order/address_spec.rb +2 -2
  300. data/spec/models/spree/order/adjustments_spec.rb +2 -2
  301. data/spec/models/spree/order/callbacks_spec.rb +2 -2
  302. data/spec/models/spree/order/checkout_spec.rb +6 -6
  303. data/spec/models/spree/order/finalizing_spec.rb +3 -3
  304. data/spec/models/spree/order/number_generator_spec.rb +1 -1
  305. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +3 -3
  306. data/spec/models/spree/order/payment_spec.rb +61 -30
  307. data/spec/models/spree/order/risk_assessment_spec.rb +2 -2
  308. data/spec/models/spree/order/state_machine_spec.rb +2 -2
  309. data/spec/models/spree/order/totals_spec.rb +2 -2
  310. data/spec/models/spree/order/updating_spec.rb +3 -3
  311. data/spec/models/spree/order/validations_spec.rb +2 -2
  312. data/spec/models/spree/order_cancellations_spec.rb +3 -3
  313. data/spec/models/spree/order_capturing_spec.rb +7 -143
  314. data/spec/models/spree/order_contents_spec.rb +2 -2
  315. data/spec/models/spree/order_inventory_spec.rb +2 -2
  316. data/spec/models/spree/order_merger_spec.rb +2 -2
  317. data/spec/models/spree/order_mutex_spec.rb +2 -2
  318. data/spec/models/spree/order_promotion_spec.rb +2 -2
  319. data/spec/models/spree/order_shipping_spec.rb +2 -2
  320. data/spec/models/spree/order_spec.rb +60 -108
  321. data/spec/models/spree/order_stock_location_spec.rb +2 -2
  322. data/spec/models/spree/order_taxation_spec.rb +1 -1
  323. data/spec/models/spree/order_update_attributes_spec.rb +2 -6
  324. data/spec/models/spree/order_updater_spec.rb +16 -16
  325. data/spec/models/spree/payment/cancellation_spec.rb +81 -0
  326. data/spec/models/spree/payment_create_spec.rb +1 -1
  327. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +2 -2
  328. data/spec/models/spree/payment_method/check_spec.rb +8 -8
  329. data/spec/models/spree/payment_method/credit_card_spec.rb +2 -2
  330. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +2 -2
  331. data/spec/models/spree/payment_method/store_credit_spec.rb +39 -27
  332. data/spec/models/spree/payment_method_spec.rb +2 -2
  333. data/spec/models/spree/payment_spec.rb +71 -17
  334. data/spec/models/spree/permission_sets/base_spec.rb +2 -2
  335. data/spec/models/spree/permission_sets/configuration_display.rb +2 -2
  336. data/spec/models/spree/permission_sets/configuration_management_spec.rb +2 -2
  337. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +2 -2
  338. data/spec/models/spree/permission_sets/order_display_spec.rb +2 -2
  339. data/spec/models/spree/permission_sets/order_management_spec.rb +2 -2
  340. data/spec/models/spree/permission_sets/product_display_spec.rb +2 -2
  341. data/spec/models/spree/permission_sets/product_management_spec.rb +2 -2
  342. data/spec/models/spree/permission_sets/promotion_display_spec.rb +2 -2
  343. data/spec/models/spree/permission_sets/promotion_management_spec.rb +2 -2
  344. data/spec/models/spree/permission_sets/report_display_spec.rb +2 -2
  345. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +2 -2
  346. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +2 -2
  347. data/spec/models/spree/permission_sets/restricted_stock_transfer_display_spec.rb +2 -2
  348. data/spec/models/spree/permission_sets/restricted_stock_transfer_management_spec.rb +2 -2
  349. data/spec/models/spree/permission_sets/stock_display_spec.rb +2 -2
  350. data/spec/models/spree/permission_sets/stock_management_spec.rb +2 -2
  351. data/spec/models/spree/permission_sets/stock_transfer_display_spec.rb +2 -2
  352. data/spec/models/spree/permission_sets/stock_transfer_management_spec.rb +2 -2
  353. data/spec/models/spree/permission_sets/user_display_spec.rb +2 -2
  354. data/spec/models/spree/permission_sets/user_management_spec.rb +2 -2
  355. data/spec/models/spree/preference_spec.rb +2 -2
  356. data/spec/models/spree/preferences/configuration_spec.rb +2 -2
  357. data/spec/models/spree/preferences/preferable_spec.rb +2 -2
  358. data/spec/models/spree/preferences/scoped_store_spec.rb +2 -2
  359. data/spec/models/spree/preferences/static_model_preferences_spec.rb +1 -1
  360. data/spec/models/spree/preferences/statically_configurable_spec.rb +1 -1
  361. data/spec/models/spree/preferences/store_spec.rb +2 -2
  362. data/spec/models/spree/price_spec.rb +2 -2
  363. data/spec/models/spree/product/scopes_spec.rb +2 -2
  364. data/spec/models/spree/product_duplicator_spec.rb +2 -2
  365. data/spec/models/spree/product_filter_spec.rb +2 -2
  366. data/spec/models/spree/product_property_spec.rb +2 -2
  367. data/spec/models/spree/product_spec.rb +2 -2
  368. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +2 -2
  369. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +2 -2
  370. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +4 -4
  371. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +2 -2
  372. data/spec/models/spree/promotion/rules/first_order_spec.rb +2 -2
  373. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +2 -2
  374. data/spec/models/spree/promotion/rules/item_total_spec.rb +2 -2
  375. data/spec/models/spree/promotion/rules/nth_order_spec.rb +2 -2
  376. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +2 -2
  377. data/spec/models/spree/promotion/rules/option_value_spec.rb +2 -2
  378. data/spec/models/spree/promotion/rules/product_spec.rb +2 -2
  379. data/spec/models/spree/promotion/rules/taxon_spec.rb +2 -2
  380. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +2 -2
  381. data/spec/models/spree/promotion/rules/user_role_spec.rb +2 -2
  382. data/spec/models/spree/promotion/rules/user_spec.rb +2 -2
  383. data/spec/models/spree/promotion_action_spec.rb +2 -2
  384. data/spec/models/spree/promotion_category_spec.rb +2 -2
  385. data/spec/models/spree/promotion_code/batch_builder_spec.rb +2 -2
  386. data/spec/models/spree/promotion_code_batch_spec.rb +2 -2
  387. data/spec/models/spree/promotion_code_spec.rb +1 -1
  388. data/spec/models/spree/promotion_handler/cart_spec.rb +3 -3
  389. data/spec/models/spree/promotion_handler/coupon_spec.rb +2 -2
  390. data/spec/models/spree/promotion_handler/page_spec.rb +2 -2
  391. data/spec/models/spree/promotion_handler/{free_shipping_spec.rb → shipping_spec.rb} +28 -3
  392. data/spec/models/spree/promotion_rule_spec.rb +2 -2
  393. data/spec/models/spree/promotion_spec.rb +4 -4
  394. data/spec/models/spree/refund_spec.rb +10 -2
  395. data/spec/models/spree/reimbursement/credit_spec.rb +2 -2
  396. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +2 -2
  397. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +2 -2
  398. data/spec/models/spree/reimbursement_performer_spec.rb +2 -2
  399. data/spec/models/spree/reimbursement_spec.rb +5 -5
  400. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +2 -2
  401. data/spec/models/spree/reimbursement_type/credit_spec.rb +2 -2
  402. data/spec/models/spree/reimbursement_type/exchange_spec.rb +2 -2
  403. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +2 -2
  404. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +2 -2
  405. data/spec/models/spree/return_authorization_spec.rb +19 -7
  406. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +2 -2
  407. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +2 -2
  408. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +2 -2
  409. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +2 -2
  410. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +2 -2
  411. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +2 -2
  412. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +2 -2
  413. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +2 -2
  414. data/spec/models/spree/return_item_spec.rb +6 -6
  415. data/spec/models/spree/returns_calculator_spec.rb +2 -2
  416. data/spec/models/spree/shipment_spec.rb +35 -18
  417. data/spec/models/spree/shipping_calculator_spec.rb +2 -2
  418. data/spec/models/spree/shipping_manifest_spec.rb +2 -2
  419. data/spec/models/spree/shipping_method_spec.rb +2 -2
  420. data/spec/models/spree/shipping_rate_spec.rb +3 -37
  421. data/spec/models/spree/shipping_rate_tax_spec.rb +1 -7
  422. data/spec/models/spree/state_spec.rb +2 -2
  423. data/spec/models/spree/stock/availability_spec.rb +127 -0
  424. data/spec/models/spree/stock/availability_validator_spec.rb +2 -2
  425. data/spec/models/spree/stock/differentiator_spec.rb +2 -2
  426. data/spec/models/spree/stock/estimator_spec.rb +2 -2
  427. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +2 -2
  428. data/spec/models/spree/stock/package_spec.rb +2 -2
  429. data/spec/models/spree/stock/quantifier_spec.rb +3 -3
  430. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +2 -2
  431. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +2 -2
  432. data/spec/models/spree/stock/{coordinator_spec.rb → simple_coordinator_spec.rb} +47 -28
  433. data/spec/models/spree/stock/splitter/backordered_spec.rb +5 -5
  434. data/spec/models/spree/stock/splitter/base_spec.rb +5 -5
  435. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +6 -6
  436. data/spec/models/spree/stock/splitter/weight_spec.rb +6 -6
  437. data/spec/models/spree/stock/splitter_chain_spec.rb +64 -0
  438. data/spec/models/spree/stock_item_spec.rb +2 -2
  439. data/spec/models/spree/stock_location_spec.rb +2 -2
  440. data/spec/models/spree/stock_movement_spec.rb +2 -2
  441. data/spec/models/spree/stock_quantities_spec.rb +247 -0
  442. data/spec/models/spree/stock_transfer_spec.rb +2 -2
  443. data/spec/models/spree/store_credit_category_spec.rb +2 -2
  444. data/spec/models/spree/store_credit_event_spec.rb +2 -2
  445. data/spec/models/spree/store_credit_spec.rb +2 -2
  446. data/spec/models/spree/store_selector/by_server_name_spec.rb +2 -2
  447. data/spec/models/spree/store_selector/legacy_spec.rb +2 -2
  448. data/spec/models/spree/store_spec.rb +2 -2
  449. data/spec/models/spree/tax/order_adjuster_spec.rb +1 -1
  450. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +2 -2
  451. data/spec/models/spree/tax/tax_location_spec.rb +1 -1
  452. data/spec/models/spree/tax/taxation_integration_spec.rb +9 -10
  453. data/spec/models/spree/tax_calculator/default_spec.rb +1 -1
  454. data/spec/models/spree/tax_category_spec.rb +2 -2
  455. data/spec/models/spree/tax_rate_spec.rb +21 -65
  456. data/spec/models/spree/taxon_spec.rb +2 -2
  457. data/spec/models/spree/taxonomy_spec.rb +2 -2
  458. data/spec/models/spree/transfer_item_spec.rb +2 -2
  459. data/spec/models/spree/unit_cancel_spec.rb +2 -2
  460. data/spec/models/spree/user_spec.rb +12 -3
  461. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +2 -2
  462. data/spec/models/spree/variant/price_selector_spec.rb +2 -2
  463. data/spec/models/spree/variant/pricing_options_spec.rb +2 -2
  464. data/spec/models/spree/variant/scopes_spec.rb +2 -2
  465. data/spec/models/spree/variant/vat_price_generator_spec.rb +2 -2
  466. data/spec/models/spree/variant_property_rule_condition_spec.rb +2 -2
  467. data/spec/models/spree/variant_property_rule_spec.rb +2 -2
  468. data/spec/models/spree/variant_property_rule_value_spec.rb +2 -2
  469. data/spec/models/spree/variant_spec.rb +2 -2
  470. data/spec/models/spree/wallet_payment_source_spec.rb +2 -2
  471. data/spec/models/spree/wallet_spec.rb +2 -2
  472. data/spec/models/spree/zone_spec.rb +2 -260
  473. data/spec/rails_helper.rb +49 -0
  474. data/spec/shared_examples/calculator_shared_examples.rb +1 -1
  475. data/spec/spec_helper.rb +3 -40
  476. data/spec/support/concerns/default_price.rb +1 -1
  477. data/spec/support/shared_contexts/rake.rb +1 -1
  478. metadata +28 -414
  479. data/app/helpers/spree/orders_helper.rb +0 -16
  480. data/app/models/spree/preferences/preferable.rb +0 -133
  481. data/app/models/spree/stock/adjuster.rb +0 -28
  482. data/app/models/spree/stock/coordinator.rb +0 -150
  483. data/app/models/spree/stock/packer.rb +0 -63
  484. data/app/models/spree/stock/prioritizer.rb +0 -48
  485. data/db/migrate/20120831092320_spree_one_two.rb +0 -473
  486. data/db/migrate/20120831092359_spree_promo_one_two.rb +0 -45
  487. data/db/migrate/20120905145253_add_tax_rate_label.rb +0 -5
  488. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +0 -5
  489. data/db/migrate/20120929093553_remove_unused_preference_columns.rb +0 -8
  490. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +0 -5
  491. data/db/migrate/20121010142909_add_states_required_to_countries.rb +0 -5
  492. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +0 -6
  493. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +0 -11
  494. data/db/migrate/20121031162139_split_prices_from_variants.rb +0 -31
  495. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +0 -9
  496. data/db/migrate/20121107184631_add_currency_to_line_items.rb +0 -5
  497. data/db/migrate/20121107194006_add_currency_to_orders.rb +0 -5
  498. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +0 -5
  499. data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +0 -5
  500. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +0 -5
  501. data/db/migrate/20121126040517_add_last_ip_to_spree_orders.rb +0 -5
  502. data/db/migrate/20121213162028_add_state_to_spree_adjustments.rb +0 -6
  503. data/db/migrate/20130114053446_add_display_on_to_spree_payment_methods.rb +0 -9
  504. data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +0 -5
  505. data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +0 -5
  506. data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +0 -9
  507. data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +0 -5
  508. data/db/migrate/20130211190146_create_spree_stock_items.rb +0 -14
  509. data/db/migrate/20130211191120_create_spree_stock_locations.rb +0 -11
  510. data/db/migrate/20130213191427_create_default_stock.rb +0 -25
  511. data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +0 -5
  512. data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +0 -5
  513. data/db/migrate/20130226191231_add_stock_location_id_to_spree_shipments.rb +0 -5
  514. data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +0 -6
  515. data/db/migrate/20130228164411_remove_on_demand_from_product_and_variant.rb +0 -6
  516. data/db/migrate/20130228210442_create_shipping_method_zone.rb +0 -21
  517. data/db/migrate/20130301162745_remove_shipping_category_id_from_shipping_method.rb +0 -5
  518. data/db/migrate/20130301162924_create_shipping_method_categories.rb +0 -13
  519. data/db/migrate/20130301205200_add_tracking_url_to_spree_shipping_methods.rb +0 -5
  520. data/db/migrate/20130304162240_create_spree_shipping_rates.rb +0 -24
  521. data/db/migrate/20130304192936_remove_category_match_attributes_from_shipping_method.rb +0 -7
  522. data/db/migrate/20130305143310_create_stock_movements.rb +0 -12
  523. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +0 -21
  524. data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +0 -5
  525. data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +0 -5
  526. data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +0 -5
  527. data/db/migrate/20130318151756_add_source_and_destination_to_stock_movements.rb +0 -8
  528. data/db/migrate/20130319062004_change_orders_total_precision.rb +0 -8
  529. data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +0 -5
  530. data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +0 -5
  531. data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +0 -5
  532. data/db/migrate/20130319183250_add_originator_to_stock_movement.rb +0 -7
  533. data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +0 -15
  534. data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +0 -9
  535. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +0 -5
  536. data/db/migrate/20130328130308_update_shipment_state_for_canceled_orders.rb +0 -15
  537. data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +0 -9
  538. data/db/migrate/20130329134939_remove_stock_item_and_variant_lock.rb +0 -14
  539. data/db/migrate/20130413230529_add_name_to_spree_credit_cards.rb +0 -5
  540. data/db/migrate/20130414000512_update_name_fields_on_spree_credit_cards.rb +0 -13
  541. data/db/migrate/20130417120034_add_index_to_source_columns_on_adjustments.rb +0 -5
  542. data/db/migrate/20130417120035_update_adjustment_states.rb +0 -16
  543. data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +0 -15
  544. data/db/migrate/20130418125341_create_spree_stock_transfers.rb +0 -14
  545. data/db/migrate/20130423110707_drop_products_count_on_hand.rb +0 -5
  546. data/db/migrate/20130423223847_set_default_shipping_rate_cost.rb +0 -5
  547. data/db/migrate/20130509115210_add_number_to_stock_transfer.rb +0 -23
  548. data/db/migrate/20130514151929_add_sku_index_to_spree_variants.rb +0 -5
  549. data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +0 -5
  550. data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +0 -5
  551. data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +0 -5
  552. data/db/migrate/20130611185927_add_user_id_index_to_spree_orders.rb +0 -5
  553. data/db/migrate/20130618041418_add_updated_at_to_spree_countries.rb +0 -9
  554. data/db/migrate/20130619012236_add_updated_at_to_spree_states.rb +0 -9
  555. data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +0 -6
  556. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +0 -5
  557. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +0 -7
  558. data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +0 -5
  559. data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +0 -6
  560. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +0 -5
  561. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +0 -6
  562. data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +0 -5
  563. data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +0 -5
  564. data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +0 -5
  565. data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +0 -10
  566. data/db/migrate/20130806022521_drop_spree_mail_methods.rb +0 -12
  567. data/db/migrate/20130806145853_set_default_stock_location_on_shipments.rb +0 -8
  568. data/db/migrate/20130807024301_upgrade_adjustments.rb +0 -40
  569. data/db/migrate/20130807024302_rename_adjustment_fields.rb +0 -14
  570. data/db/migrate/20130809164245_add_admin_name_column_to_spree_shipping_methods.rb +0 -5
  571. data/db/migrate/20130809164330_add_admin_name_column_to_spree_stock_locations.rb +0 -5
  572. data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +0 -5
  573. data/db/migrate/20130813140619_expand_order_number_size.rb +0 -9
  574. data/db/migrate/20130813232134_rename_activators_to_promotions.rb +0 -5
  575. data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +0 -5
  576. data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +0 -5
  577. data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +0 -14
  578. data/db/migrate/20130828234942_add_tax_total_to_line_items_shipments_and_orders.rb +0 -8
  579. data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +0 -15
  580. data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +0 -19
  581. data/db/migrate/20130903183026_add_code_to_spree_promotion_rules.rb +0 -5
  582. data/db/migrate/20130909115621_change_states_required_for_countries.rb +0 -9
  583. data/db/migrate/20130915032339_add_deleted_at_to_spree_stock_items.rb +0 -5
  584. data/db/migrate/20130917024658_remove_promotions_event_name_field.rb +0 -5
  585. data/db/migrate/20130924040529_add_promo_total_to_line_items_and_shipments_and_orders.rb +0 -7
  586. data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +0 -17
  587. data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +0 -5
  588. data/db/migrate/20131107132123_add_tax_category_to_variants.rb +0 -6
  589. data/db/migrate/20131113035136_add_channel_to_spree_orders.rb +0 -5
  590. data/db/migrate/20131118043959_add_included_to_adjustments.rb +0 -5
  591. data/db/migrate/20131118050234_rename_tax_total_fields.rb +0 -11
  592. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +0 -20
  593. data/db/migrate/20131120234456_add_updated_at_to_variants.rb +0 -5
  594. data/db/migrate/20131127001002_add_position_to_classifications.rb +0 -5
  595. data/db/migrate/20131211112807_create_spree_orders_promotions.rb +0 -8
  596. data/db/migrate/20131211192741_unique_shipping_method_categories.rb +0 -24
  597. data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +0 -5
  598. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +0 -9
  599. data/db/migrate/20140106224208_rename_permalink_to_slug_for_products.rb +0 -5
  600. data/db/migrate/20140120160805_add_index_to_variant_id_and_currency_on_prices.rb +0 -5
  601. data/db/migrate/20140124023232_rename_activator_id_in_rules_and_actions_to_promotion_id.rb +0 -6
  602. data/db/migrate/20140129024326_add_deleted_at_to_spree_prices.rb +0 -5
  603. data/db/migrate/20140203161722_add_approver_id_and_approved_at_to_orders.rb +0 -6
  604. data/db/migrate/20140204115338_add_confirmation_delivered_to_spree_orders.rb +0 -5
  605. data/db/migrate/20140204192230_add_auto_capture_to_payment_methods.rb +0 -5
  606. data/db/migrate/20140205120320_create_spree_payment_capture_events.rb +0 -12
  607. data/db/migrate/20140205144710_add_uncaptured_amount_to_payments.rb +0 -5
  608. data/db/migrate/20140205181631_default_variant_weight_to_zero.rb +0 -11
  609. data/db/migrate/20140207085910_add_tax_category_id_to_shipping_methods.rb +0 -5
  610. data/db/migrate/20140207093021_add_tax_rate_id_to_shipping_rates.rb +0 -5
  611. data/db/migrate/20140211040159_add_pre_tax_amount_to_line_items_and_shipments.rb +0 -6
  612. data/db/migrate/20140213184916_add_more_indexes.rb +0 -13
  613. data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +0 -5
  614. data/db/migrate/20140227112348_add_preference_store_to_everything.rb +0 -8
  615. data/db/migrate/20140307235515_add_user_id_to_spree_credit_cards.rb +0 -13
  616. data/db/migrate/20140309023735_migrate_old_preferences.rb +0 -52
  617. data/db/migrate/20140309024355_create_spree_stores.rb +0 -25
  618. data/db/migrate/20140309033438_create_store_from_preferences.rb +0 -34
  619. data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +0 -6
  620. data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +0 -8
  621. data/db/migrate/20140331100557_add_additional_store_fields.rb +0 -8
  622. data/db/migrate/20140410141842_add_many_missing_indexes.rb +0 -19
  623. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +0 -65
  624. data/db/migrate/20140415041315_add_user_id_created_by_id_index_to_order.rb +0 -5
  625. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +0 -8
  626. data/db/migrate/20140518174634_add_token_to_spree_orders.rb +0 -5
  627. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +0 -29
  628. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +0 -22
  629. data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +0 -6
  630. data/db/migrate/20140609201656_add_deleted_at_to_spree_promotion_actions.rb +0 -6
  631. data/db/migrate/20140616202624_remove_uncaptured_amount_from_spree_payments.rb +0 -5
  632. data/db/migrate/20140625214618_create_spree_refunds.rb +0 -12
  633. data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +0 -12
  634. data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +0 -5
  635. data/db/migrate/20140708132019_create_order_mutex.rb +0 -11
  636. data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +0 -10
  637. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +0 -54
  638. data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +0 -7
  639. data/db/migrate/20140710190048_drop_return_authorization_amount.rb +0 -5
  640. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +0 -32
  641. data/db/migrate/20140713140527_create_spree_refund_reasons.rb +0 -14
  642. data/db/migrate/20140713142214_rename_return_authorization_reason.rb +0 -5
  643. data/db/migrate/20140715182625_create_spree_promotion_categories.rb +0 -11
  644. data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +0 -9
  645. data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +0 -6
  646. data/db/migrate/20140717155155_create_default_refund_reason.rb +0 -9
  647. data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +0 -7
  648. data/db/migrate/20140718133010_create_spree_customer_returns.rb +0 -9
  649. data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +0 -6
  650. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +0 -15
  651. data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +0 -5
  652. data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +0 -13
  653. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +0 -13
  654. data/db/migrate/20140725131539_create_spree_reimbursements.rb +0 -21
  655. data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +0 -5
  656. data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +0 -7
  657. data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +0 -5
  658. data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +0 -20
  659. data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +0 -10
  660. data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +0 -5
  661. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +0 -11
  662. data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +0 -9
  663. data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +0 -10
  664. data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +0 -7
  665. data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +0 -5
  666. data/db/migrate/20140927193717_default_pre_tax_amount_should_be_zero.rb +0 -6
  667. data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +0 -5
  668. data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +0 -6
  669. data/db/migrate/20141009204607_add_store_id_to_orders.rb +0 -12
  670. data/db/migrate/20141012083513_create_spree_taxons_prototypes.rb +0 -8
  671. data/db/migrate/20141023005240_add_counter_cache_from_spree_variants_to_spree_stock_items.rb +0 -8
  672. data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +0 -13
  673. data/db/migrate/20141105213646_update_classifications_positions.rb +0 -9
  674. data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +0 -5
  675. data/db/migrate/20141215235502_remove_extra_products_slug_index.rb +0 -5
  676. data/db/migrate/20141217215630_update_product_slug_index.rb +0 -8
  677. data/db/migrate/20141231151320_add_default_column_to_price.rb +0 -5
  678. data/db/migrate/20150112194216_add_position_to_stock_location.rb +0 -5
  679. data/db/migrate/20150113002122_create_spree_promotion_codes.rb +0 -13
  680. data/db/migrate/20150113002123_create_adjustment_promotion_code_association.rb +0 -6
  681. data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +0 -6
  682. data/db/migrate/20150121202544_add_restock_inventory_to_stock_location.rb +0 -5
  683. data/db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb +0 -5
  684. data/db/migrate/20150127161843_create_order_stock_locations.rb +0 -12
  685. data/db/migrate/20150203151219_add_fulfillable_to_stock_location.rb +0 -5
  686. data/db/migrate/20150205210527_add_code_to_refund_reason.rb +0 -5
  687. data/db/migrate/20150213160148_add_promotion_code_id_to_orders_promotions.rb +0 -7
  688. data/db/migrate/20150213163612_add_approver_name_to_spree_orders.rb +0 -5
  689. data/db/migrate/20150225205344_move_promotion_code_to_promotion_code_value.rb +0 -64
  690. data/db/migrate/20150226195213_downcase_promotion_codes_values.rb +0 -11
  691. data/db/migrate/20150227161934_add_order_ids_to_adjustments_where_missing.rb +0 -9
  692. data/db/migrate/20150303212749_add_per_code_usage_limit_to_promotions.rb +0 -5
  693. data/db/migrate/20150303212826_remove_usage_limit_from_promotion_codes.rb +0 -5
  694. data/db/migrate/20150304211616_add_timestamps_to_order_promotions.rb +0 -6
  695. data/db/migrate/20150305043021_create_spree_cartons.rb +0 -24
  696. data/db/migrate/20150305210403_add_timestamps_to_spree_roles_users.rb +0 -7
  697. data/db/migrate/20150313140507_remove_considered_risky_from_spree_orders.rb +0 -5
  698. data/db/migrate/20150313192827_add_index_to_inventory_units_carton_id.rb +0 -5
  699. data/db/migrate/20150313201235_add_imported_from_shipment_id_to_cartons.rb +0 -8
  700. data/db/migrate/20150313201503_copy_shipped_shipments_to_cartons.rb +0 -12
  701. data/db/migrate/20150330144639_create_spree_user_stock_locations.rb +0 -10
  702. data/db/migrate/20150331134544_add_stock_location_code.rb +0 -5
  703. data/db/migrate/20150402210430_create_unit_cancels.rb +0 -10
  704. data/db/migrate/20150407173305_add_fields_to_stock_transfer.rb +0 -12
  705. data/db/migrate/20150407173531_create_transfer_items.rb +0 -14
  706. data/db/migrate/20150424143547_drop_stock_transfer_type.rb +0 -10
  707. data/db/migrate/20150424161102_add_stock_transfer_finalized_at.rb +0 -8
  708. data/db/migrate/20150429125822_rename_stock_transfer_reference.rb +0 -5
  709. data/db/migrate/20150430233803_create_line_item_actions.rb +0 -10
  710. data/db/migrate/20150506181159_create_spree_store_credit_categories.rb +0 -10
  711. data/db/migrate/20150506181244_create_spree_store_credits.rb +0 -19
  712. data/db/migrate/20150506181539_create_spree_store_credit_events.rb +0 -17
  713. data/db/migrate/20150506181611_create_spree_store_credit_payment_method.rb +0 -21
  714. data/db/migrate/20150506181715_create_store_credit_types.rb +0 -17
  715. data/db/migrate/20150506182045_create_store_credit_reimbursement_type.rb +0 -5
  716. data/db/migrate/20150508044622_add_resellable_to_return_items.rb +0 -5
  717. data/db/migrate/20150514185559_add_invalidated_at_to_spree_store_credits.rb +0 -5
  718. data/db/migrate/20150514201836_migrate_deleted_store_credits_to_invalidated.rb +0 -13
  719. data/db/migrate/20150515170322_add_check_stock_on_transfer.rb +0 -5
  720. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -79
  721. data/db/migrate/20150528125647_delete_inventory_units_without_shipment.rb +0 -25
  722. data/db/migrate/20150601191251_add_deleted_at_to_stock_transfers.rb +0 -5
  723. data/db/migrate/20150601204148_add_deleted_at_to_transfer_items.rb +0 -5
  724. data/db/migrate/20150609093816_increase_scale_on_pre_tax_amounts.rb +0 -26
  725. data/db/migrate/20150609193231_add_preferences_to_promotion_actions.rb +0 -5
  726. data/db/migrate/20150610182638_add_id_to_spree_option_values_variants.rb +0 -5
  727. data/db/migrate/20150611200247_add_frontend_viewable_to_spree_orders.rb +0 -5
  728. data/db/migrate/20150612205731_remove_spree_configurations.rb +0 -15
  729. data/db/migrate/20150616204659_add_preference_source_to_spree_payment_methods.rb +0 -5
  730. data/db/migrate/20150618191713_remove_credit_card_address_id.rb +0 -7
  731. data/db/migrate/20150618212517_create_spree_store_credit_update_reasons.rb +0 -8
  732. data/db/migrate/20150619160613_create_adjustment_reason.rb +0 -18
  733. data/db/migrate/20150622144655_add_update_reason_to_store_credit_events.rb +0 -5
  734. data/db/migrate/20150623194316_add_return_authorization_reason_id_to_return_items.rb +0 -7
  735. data/db/migrate/20150623214058_seed_store_credit_update_reasons.rb +0 -9
  736. data/db/migrate/20150626200816_remove_shipping_method_id_from_spree_orders.rb +0 -9
  737. data/db/migrate/20150626214817_remove_counter_cache_from_spree_variants_to_spree_stock_items.rb +0 -10
  738. data/db/migrate/20150629175931_add_address_id_to_credit_card.rb +0 -5
  739. data/db/migrate/20150630175644_copy_order_bill_address_to_credit_card.rb +0 -12
  740. data/db/migrate/20150723224133_remove_unnecessary_indexes.rb +0 -62
  741. data/db/migrate/20150724163716_remove_state_lock_version_from_order.rb +0 -11
  742. data/db/migrate/20150731201146_add_spree_user_addresses.rb +0 -15
  743. data/db/migrate/20150806190833_add_id_and_timestamp_to_promotion_rule_user.rb +0 -13
  744. data/db/migrate/20150811210350_remove_mandatory_from_adjustments.rb +0 -5
  745. data/db/migrate/20150811211025_add_finalized_to_spree_adjustments.rb +0 -11
  746. data/db/migrate/20150820160821_add_store_payment_methods.rb +0 -10
  747. data/db/migrate/20150824213633_convert_habtm_to_hmt_for_shipping_methods_zones.rb +0 -17
  748. data/db/migrate/20150824214129_convert_habtm_to_hmt_for_products_promotion_rules.rb +0 -17
  749. data/db/migrate/20150825204216_drop_spree_gateways.rb +0 -20
  750. data/db/migrate/20150826002555_convert_habtm_to_hmt_for_taxon_prototypes.rb +0 -15
  751. data/db/migrate/20150909123605_create_variant_properties_and_rules.rb +0 -28
  752. data/db/migrate/20151001121454_create_spree_shipping_method_stock_locations.rb +0 -13
  753. data/db/migrate/20151002023248_add_foreign_key_to_shipping_method_stock_location.rb +0 -6
  754. data/db/migrate/20151010003252_add_foreign_keys_for_taxons_prototypes.rb +0 -6
  755. data/db/migrate/20151013222921_remove_token_permissions_table.rb +0 -16
  756. data/db/migrate/20151014213349_rename_identifier_to_number_for_payment.rb +0 -7
  757. data/db/migrate/20151015203732_add_foreign_keys_for_product_promotion_rules.rb +0 -9
  758. data/db/migrate/20151021113730_add_sale_to_spree_promotions.rb +0 -6
  759. data/db/migrate/20151021163309_convert_sale_promotions.rb +0 -28
  760. data/db/migrate/20151026093607_change_return_item_pre_tax_amount_to_amount.rb +0 -29
  761. data/db/migrate/20151117063249_convert_habtm_to_hmt_for_properties_prototypes.rb +0 -17
  762. data/db/migrate/20151124062500_convert_habtm_to_hmt_for_option_type_prototypes.rb +0 -17
  763. data/db/migrate/20151126063028_convert_habtm_to_hmt_for_taxons_promotion_rules.rb +0 -15
  764. data/db/migrate/20151219020209_add_stock_item_unique_index.rb +0 -9
  765. data/db/migrate/20160111091912_add_column_available_to_all_on_spree_shipping_method.rb +0 -5
  766. data/db/migrate/20160116133604_add_position_to_spree_payment_methods.rb +0 -5
  767. data/db/migrate/20160122182105_add_carrier_and_service_level_to_spree_shipping_methods.rb +0 -6
  768. data/db/migrate/20160224201413_create_spree_shipping_rate_taxes.rb +0 -11
  769. data/db/migrate/20160229133259_add_cart_tax_country_iso_to_spree_store.rb +0 -5
  770. data/db/migrate/20160301103333_remove_pre_tax_amount_on_line_item_and_shipment.rb +0 -6
  771. data/db/migrate/20160308000300_disallow_adjustment_finalized_nulls.rb +0 -19
  772. data/db/migrate/20160318145302_add_timestamps_to_prices.rb +0 -5
  773. data/db/migrate/20160330204846_add_missing_timestamp_columns.rb +0 -20
  774. data/db/migrate/20160420044191_create_spree_wallet_payment_sources.rb +0 -23
  775. data/db/migrate/20160420181916_migrate_credit_cards_to_wallet_payment_sources.rb +0 -27
  776. data/db/migrate/20160509181311_add_country_iso_to_prices.rb +0 -8
  777. data/db/migrate/20160527070401_rename_shipment_address_field.rb +0 -7
  778. data/db/migrate/20160608162651_ensure_default_store.rb +0 -13
  779. data/db/migrate/20160608180751_ensure_store_on_orders.rb +0 -12
  780. data/db/migrate/20160616232103_remove_user_id_from_promotion_rules.rb +0 -11
  781. data/db/migrate/20160718205341_add_payment_id_index_to_spree_refunds.rb +0 -5
  782. data/db/migrate/20160718205859_add_reimbursement_id_index_to_spree_refunds.rb +0 -5
  783. data/lib/spree/core/controller_helpers/respond_with.rb +0 -65
  784. data/lib/spree/core/price_migrator.rb +0 -30
  785. data/lib/spree/responder.rb +0 -44
  786. data/lib/spree/testing_support/factories/stock_packer_factory.rb +0 -13
  787. data/lib/tasks/migrations/copy_shipped_shipments_to_cartons.rake +0 -172
  788. data/lib/tasks/migrations/create_vat_prices.rake +0 -15
  789. data/lib/tasks/upgrade.rake +0 -11
  790. data/spec/helpers/order_helper_spec.rb +0 -12
  791. data/spec/lib/spree/core/price_migrator_spec.rb +0 -358
  792. data/spec/lib/spree/core/testing_support/factories/stock_packer_factory_spec.rb +0 -16
  793. data/spec/lib/tasks/migrations/copy_shipped_shipments_to_cartons_spec.rb +0 -111
  794. data/spec/lib/tasks/migrations/create_vat_prices_spec.rb +0 -31
  795. data/spec/lib/tasks/order_capturing_spec.rb +0 -53
  796. data/spec/lib/tasks/upgrade_spec.rb +0 -20
  797. data/spec/models/spree/order/tax_spec.rb +0 -98
  798. data/spec/models/spree/stock/packer_spec.rb +0 -90
  799. data/spec/models/spree/stock/prioritizer_spec.rb +0 -125
@@ -98,7 +98,7 @@ module Spree
98
98
  before_transition to: :delivery, do: :ensure_shipping_address
99
99
  before_transition to: :delivery, do: :create_proposed_shipments
100
100
  before_transition to: :delivery, do: :ensure_available_shipping_rates
101
- before_transition from: :delivery, do: :apply_free_shipping_promotions
101
+ before_transition from: :delivery, do: :apply_shipping_promotions
102
102
  end
103
103
 
104
104
  before_transition to: :resumed, do: :ensure_line_item_variants_are_not_deleted
@@ -120,7 +120,7 @@ module Spree
120
120
  after_transition to: :canceled, do: :after_cancel
121
121
 
122
122
  after_transition from: any - :cart, to: any - [:confirm, :complete] do |order|
123
- order.update!
123
+ order.recalculate
124
124
  end
125
125
 
126
126
  after_transition do |order, transition|
@@ -185,15 +185,22 @@ module Spree
185
185
  line_items.map(&:amount).sum
186
186
  end
187
187
 
188
- # Sum of all line item amounts pre-tax
189
- def pre_tax_item_amount
190
- line_items.to_a.sum(&:pre_tax_amount)
191
- end
192
-
193
188
  # Sum of all line item amounts after promotions, before added tax
194
189
  def discounted_item_amount
195
190
  line_items.to_a.sum(&:discounted_amount)
196
191
  end
192
+ deprecate discounted_item_amount: :item_total_before_tax, deprecator: Spree::Deprecation
193
+
194
+ def item_total_before_tax
195
+ line_items.to_a.sum(&:total_before_tax)
196
+ end
197
+
198
+ # Sum of all line item amounts pre-tax
199
+ def item_total_excluding_vat
200
+ line_items.to_a.sum(&:total_excluding_vat)
201
+ end
202
+ alias pre_tax_item_amount item_total_excluding_vat
203
+ deprecate pre_tax_item_amount: :item_total_excluding_vat, deprecator: Spree::Deprecation
197
204
 
198
205
  def currency
199
206
  self[:currency] || Spree::Config[:currency]
@@ -233,14 +240,6 @@ module Spree
233
240
  shipments.any?(&:backordered?)
234
241
  end
235
242
 
236
- # Returns the relevant zone (if any) to be used for taxation purposes.
237
- # Uses default tax zone unless there is a specific match
238
- def tax_zone
239
- Spree::Zone.match(tax_address) || Spree::Zone.default_tax
240
- end
241
- deprecate tax_zone: "Please use Spree::Order#tax_address instead.",
242
- deprecator: Spree::Deprecation
243
-
244
243
  # Returns the address for taxation based on configuration
245
244
  def tax_address
246
245
  if Spree::Config[:tax_using_ship_address]
@@ -254,10 +253,19 @@ module Spree
254
253
  @updater ||= Spree::OrderUpdater.new(self)
255
254
  end
256
255
 
257
- def update!
256
+ def recalculate
258
257
  updater.update
259
258
  end
260
259
 
260
+ def update!(*args)
261
+ if args.empty?
262
+ Spree::Deprecation.warn "Calling order.update! with no arguments as a way to invoke the OrderUpdater is deprecated, since it conflicts with AR::Base#update! Please use order.recalculate instead"
263
+ recalculate
264
+ else
265
+ super
266
+ end
267
+ end
268
+
261
269
  def assign_billing_to_shipping_address
262
270
  self.ship_address = bill_address if bill_address
263
271
  true
@@ -407,7 +415,7 @@ module Spree
407
415
  # update payment and shipment(s) states, and save
408
416
  updater.update_payment_state
409
417
  shipments.each do |shipment|
410
- shipment.update!(self)
418
+ shipment.update_state
411
419
  shipment.finalize!
412
420
  end
413
421
 
@@ -421,7 +429,7 @@ module Spree
421
429
  end
422
430
 
423
431
  def fulfill!
424
- shipments.each { |shipment| shipment.update!(self) if shipment.persisted? }
432
+ shipments.each { |shipment| shipment.update_state if shipment.persisted? }
425
433
  updater.update_shipment_state
426
434
  save!
427
435
  end
@@ -471,7 +479,7 @@ module Spree
471
479
  shipments.destroy_all
472
480
  order_promotions.destroy_all
473
481
 
474
- update!
482
+ recalculate
475
483
  end
476
484
 
477
485
  alias_method :has_step?, :has_checkout_step?
@@ -527,10 +535,11 @@ module Spree
527
535
  end
528
536
  end
529
537
 
530
- def apply_free_shipping_promotions
531
- Spree::PromotionHandler::FreeShipping.new(self).activate
532
- update!
538
+ def apply_shipping_promotions
539
+ Spree::PromotionHandler::Shipping.new(self).activate
540
+ recalculate
533
541
  end
542
+ deprecate apply_free_shipping_promotions: :apply_shipping_promotions, deprecator: Spree::Deprecation
534
543
 
535
544
  # Clean shipments and make order back to address state
536
545
  #
@@ -565,7 +574,7 @@ module Spree
565
574
 
566
575
  def set_shipments_cost
567
576
  shipments.each(&:update_amounts)
568
- update!
577
+ recalculate
569
578
  end
570
579
  deprecate set_shipments_cost: :update!, deprecator: Spree::Deprecation
571
580
 
@@ -611,7 +620,7 @@ module Spree
611
620
 
612
621
  def add_store_credit_payments
613
622
  return if user.nil?
614
- return if payments.store_credits.checkout.empty? && user.total_available_store_credit.zero?
623
+ return if payments.store_credits.checkout.empty? && user.available_store_credit_total(currency: currency).zero?
615
624
 
616
625
  payments.store_credits.checkout.each(&:invalidate!)
617
626
 
@@ -622,10 +631,12 @@ module Spree
622
631
 
623
632
  remaining_total = outstanding_balance - authorized_total
624
633
 
625
- if user.store_credits.any?
634
+ matching_store_credits = user.store_credits.where(currency: currency)
635
+
636
+ if matching_store_credits.any?
626
637
  payment_method = Spree::PaymentMethod::StoreCredit.first
627
638
 
628
- user.store_credits.order_by_priority.each do |credit|
639
+ matching_store_credits.order_by_priority.each do |credit|
629
640
  break if remaining_total.zero?
630
641
  next if credit.amount_remaining.zero?
631
642
 
@@ -648,20 +659,20 @@ module Spree
648
659
 
649
660
  payments.reset
650
661
 
651
- if payments.where(state: %w(checkout pending)).sum(:amount) != total
662
+ if payments.where(state: %w(checkout pending completed)).sum(:amount) != total
652
663
  errors.add(:base, Spree.t("store_credit.errors.unable_to_fund")) && (return false)
653
664
  end
654
665
  end
655
666
 
656
667
  def covered_by_store_credit?
657
668
  return false unless user
658
- user.total_available_store_credit >= total
669
+ user.available_store_credit_total(currency: currency) >= total
659
670
  end
660
671
  alias_method :covered_by_store_credit, :covered_by_store_credit?
661
672
 
662
673
  def total_available_store_credit
663
674
  return 0.0 unless user
664
- user.total_available_store_credit
675
+ user.available_store_credit_total(currency: currency)
665
676
  end
666
677
 
667
678
  def order_total_after_store_credit
@@ -672,7 +683,7 @@ module Spree
672
683
  if can_complete? || complete?
673
684
  payments.store_credits.valid.sum(:amount)
674
685
  else
675
- [total, (user.try(:total_available_store_credit) || 0.0)].min
686
+ [total, (user.try(:available_store_credit_total, currency: currency) || 0.0)].min
676
687
  end
677
688
  end
678
689
 
@@ -748,23 +759,6 @@ module Spree
748
759
  end
749
760
  end
750
761
 
751
- def payments_attributes=(attributes)
752
- validate_payments_attributes(attributes)
753
- super(attributes)
754
- end
755
-
756
- def validate_payments_attributes(attributes)
757
- attributes = Array(attributes)
758
- # Ensure the payment methods specified are allowed for this user
759
- payment_methods = Spree::PaymentMethod.where(id: available_payment_methods)
760
- attributes.each do |payment_attributes|
761
- payment_method_id = payment_attributes[:payment_method_id]
762
-
763
- # raise RecordNotFound unless it is an allowed payment method
764
- payment_methods.find(payment_method_id) if payment_method_id
765
- end
766
- end
767
-
768
762
  private
769
763
 
770
764
  def process_payments_before_complete
@@ -800,6 +794,7 @@ module Spree
800
794
  @updating_params[:order][:payments_attributes].first[:amount] = total
801
795
  end
802
796
  end
797
+ deprecate update_params_payment_source: :set_payment_parameters_amount, deprecator: Spree::Deprecation
803
798
 
804
799
  def associate_store
805
800
  self.store ||= Spree::Store.default
@@ -829,7 +824,7 @@ module Spree
829
824
  end
830
825
  if adjustment_changed
831
826
  restart_checkout_flow
832
- update!
827
+ recalculate
833
828
  errors.add(:base, Spree.t(:promotion_total_changed_before_complete))
834
829
  end
835
830
  errors.empty?
@@ -861,7 +856,7 @@ module Spree
861
856
  payments.store_credits.pending.each(&:void_transaction!)
862
857
 
863
858
  send_cancel_email
864
- update!
859
+ recalculate
865
860
  end
866
861
 
867
862
  def send_cancel_email
@@ -41,7 +41,7 @@ class Spree::OrderCancellations
41
41
  Spree::OrderMailer.inventory_cancellation_email(@order, inventory_units.to_a).deliver_later if Spree::OrderCancellations.send_cancellation_mailer
42
42
  end
43
43
 
44
- @order.update!
44
+ @order.recalculate
45
45
 
46
46
  if short_ship_tax_notifier
47
47
  short_ship_tax_notifier.call(unit_cancels)
@@ -11,6 +11,8 @@ class Spree::OrderCapturing
11
11
  self.failure_handler = ->(failures) { raise Spree::OrderCapturingFailures.new(failures.to_json) }
12
12
 
13
13
  def initialize(order, sorted_payment_method_classes = nil)
14
+ Spree::Deprecation.warn "Spree::OrderCapturing is deprecated and will be removed without replacement. " \
15
+ "Please implement your own automated capturing logic in your store."
14
16
  @order = order
15
17
  @sorted_payment_method_classes = sorted_payment_method_classes || Spree::OrderCapturing.sorted_payment_method_classes
16
18
  end
@@ -73,7 +73,7 @@ class Spree::OrderShipping
73
73
 
74
74
  send_shipment_emails(carton) if stock_location.fulfillable? && !suppress_mailer # e.g. digital gift cards that aren't actually shipped
75
75
  fulfill_order_stock_locations(stock_location)
76
- @order.update!
76
+ @order.recalculate
77
77
 
78
78
  carton
79
79
  end
@@ -14,8 +14,6 @@ module Spree
14
14
  # Assign the attributes to the order and save the order
15
15
  # @return true if saved, otherwise false and errors will be set on the order
16
16
  def apply
17
- order.validate_payments_attributes(@payments_attributes)
18
-
19
17
  assign_order_attributes
20
18
  assign_payments_attributes
21
19
 
@@ -141,7 +141,7 @@ module Spree
141
141
  # give each of the shipments a chance to update themselves
142
142
  def update_shipments
143
143
  shipments.each do |shipment|
144
- shipment.update!(order)
144
+ shipment.update_state
145
145
  end
146
146
  end
147
147
 
@@ -208,7 +208,7 @@ module Spree
208
208
  [*line_items, *shipments].each do |item|
209
209
  promotion_adjustments = item.adjustments.select(&:promotion?)
210
210
 
211
- promotion_adjustments.each(&:update!)
211
+ promotion_adjustments.each(&:recalculate)
212
212
  Spree::Config.promotion_chooser_class.new(promotion_adjustments).update
213
213
 
214
214
  item.promo_total = promotion_adjustments.select(&:eligible?).sum(&:amount)
@@ -221,7 +221,7 @@ module Spree
221
221
  # line items and/or shipments.
222
222
  def update_order_promotions
223
223
  promotion_adjustments = order.adjustments.select(&:promotion?)
224
- promotion_adjustments.each(&:update!)
224
+ promotion_adjustments.each(&:recalculate)
225
225
  Spree::Config.promotion_chooser_class.new(promotion_adjustments).update
226
226
  end
227
227
 
@@ -244,7 +244,7 @@ module Spree
244
244
 
245
245
  def update_cancellations
246
246
  line_items.each do |line_item|
247
- line_item.adjustments.select(&:cancellation?).each(&:update!)
247
+ line_item.adjustments.select(&:cancellation?).each(&:recalculate)
248
248
  end
249
249
  end
250
250
 
@@ -0,0 +1,60 @@
1
+ module Spree
2
+ class Payment
3
+ # Payment cancellation handler
4
+ #
5
+ # Cancels a payment by trying to void first and if that fails
6
+ # creating a refund about the full amount instead.
7
+ #
8
+ class Cancellation
9
+ DEFAULT_REASON = 'Order canceled'.freeze
10
+
11
+ attr_reader :reason
12
+
13
+ # @param reason [String] (DEFAULT_REASON) -
14
+ # The reason used to create the Spree::RefundReason
15
+ def initialize(reason: DEFAULT_REASON)
16
+ @reason = reason
17
+ end
18
+
19
+ # Cancels a payment
20
+ #
21
+ # Tries to void the payment by asking the payment method to try a void,
22
+ # if that fails create a refund about the allowed credit amount instead.
23
+ #
24
+ # @param payment [Spree::Payment] - the payment that should be canceled
25
+ #
26
+ def cancel(payment)
27
+ # For payment methods already implemeting `try_void`
28
+ if try_void_available?(payment.payment_method)
29
+ if response = payment.payment_method.try_void(payment)
30
+ payment.send(:handle_void_response, response)
31
+ else
32
+ payment.refunds.create!(amount: payment.credit_allowed, reason: refund_reason)
33
+ end
34
+ else
35
+ # For payment methods not yet implemeting `try_void`
36
+ deprecated_behavior(payment)
37
+ end
38
+ end
39
+
40
+ private
41
+
42
+ def refund_reason
43
+ Spree::RefundReason.where(name: reason).first_or_create
44
+ end
45
+
46
+ def try_void_available?(payment_method)
47
+ payment_method.respond_to?(:try_void) &&
48
+ payment_method.method(:try_void).owner != Spree::PaymentMethod
49
+ end
50
+
51
+ def deprecated_behavior(payment)
52
+ Spree::Deprecation.warn "#{payment.payment_method.class.name}#cancel is deprecated and will be removed. " \
53
+ 'Please implement a `try_void` method instead that returns a response object if void succeeds ' \
54
+ 'or `false|nil` if not. Solidus will refund the payment then.'
55
+ response = payment.payment_method.cancel(payment.response_code)
56
+ payment.send(:handle_void_response, response)
57
+ end
58
+ end
59
+ end
60
+ end
@@ -79,8 +79,7 @@ module Spree
79
79
  end
80
80
 
81
81
  def cancel!
82
- response = payment_method.cancel(response_code)
83
- handle_void_response(response)
82
+ Spree::Config.payment_canceller.cancel(self)
84
83
  end
85
84
 
86
85
  def gateway_options
@@ -40,7 +40,6 @@ module Spree
40
40
 
41
41
  validates :amount, numericality: true
42
42
  validates :source, presence: true, if: :source_required?
43
- validates :payment_method, presence: true
44
43
 
45
44
  default_scope -> { order(:created_at) }
46
45
 
@@ -231,17 +230,15 @@ module Spree
231
230
 
232
231
  def invalidate_old_payments
233
232
  if !store_credit? && !['invalid', 'failed'].include?(state)
234
- order.payments.select do |payment|
235
- payment.state == 'checkout' &&
236
- payment.payment_method_id == payment_method.try!(:id) &&
237
- payment.id != id
238
- end.each(&:invalidate!)
233
+ order.payments.select { |payment|
234
+ payment.state == 'checkout' && !payment.store_credit? && payment.id != id
235
+ }.each(&:invalidate!)
239
236
  end
240
237
  end
241
238
 
242
239
  def update_order
243
240
  if order.completed? || completed? || void?
244
- order.update!
241
+ order.recalculate
245
242
  end
246
243
  end
247
244
 
@@ -55,7 +55,8 @@ module Spree
55
55
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345')
56
56
  end
57
57
 
58
- def cancel(_response_code)
58
+ # @see Spree::PaymentMethod#try_void
59
+ def try_void(_payment)
59
60
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345')
60
61
  end
61
62
 
@@ -18,11 +18,10 @@ module Spree
18
18
  simulated_successful_billing_response
19
19
  end
20
20
 
21
- def cancel(*); end
22
-
23
21
  def void(*)
24
22
  simulated_successful_billing_response
25
23
  end
24
+ alias_method :try_void, :void
26
25
 
27
26
  def credit(*)
28
27
  simulated_successful_billing_response
@@ -64,15 +64,16 @@ module Spree
64
64
  handle_action(action, :credit, auth_code)
65
65
  end
66
66
 
67
- def cancel(auth_code)
67
+ # @see Spree::PaymentMethod#try_void
68
+ def try_void(payment)
69
+ auth_code = payment.response_code
68
70
  store_credit_event = auth_or_capture_event(auth_code)
69
71
  store_credit = store_credit_event.try(:store_credit)
70
72
 
71
73
  if store_credit_event.nil? || store_credit.nil?
72
74
  ActiveMerchant::Billing::Response.new(false, '', {}, {})
73
75
  elsif store_credit_event.capture_action?
74
- amount_in_cents = (store_credit_event.amount * 100).round
75
- credit(amount_in_cents, auth_code)
76
+ false # payment#cancel! handles the refund
76
77
  elsif store_credit_event.authorization_action?
77
78
  void(auth_code)
78
79
  else