solidus_core 1.0.0.pre

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 (610) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +26 -0
  3. data/app/assets/images/logo/solidus.png +0 -0
  4. data/app/assets/images/logo/solidus_logo.png +0 -0
  5. data/app/assets/images/noimage/large.png +0 -0
  6. data/app/assets/images/noimage/mini.png +0 -0
  7. data/app/assets/images/noimage/product.png +0 -0
  8. data/app/assets/images/noimage/small.png +0 -0
  9. data/app/assets/javascripts/spree.js.coffee.erb +61 -0
  10. data/app/controllers/spree/base_controller.rb +15 -0
  11. data/app/helpers/spree/base_helper.rb +210 -0
  12. data/app/helpers/spree/checkout_helper.rb +31 -0
  13. data/app/helpers/spree/orders_helper.rb +17 -0
  14. data/app/helpers/spree/products_helper.rb +82 -0
  15. data/app/helpers/spree/store_helper.rb +16 -0
  16. data/app/helpers/spree/taxons_helper.rb +19 -0
  17. data/app/mailers/spree/base_mailer.rb +23 -0
  18. data/app/mailers/spree/carton_mailer.rb +12 -0
  19. data/app/mailers/spree/order_mailer.rb +35 -0
  20. data/app/mailers/spree/reimbursement_mailer.rb +10 -0
  21. data/app/mailers/spree/test_mailer.rb +8 -0
  22. data/app/models/concerns/spree/adjustment_source.rb +24 -0
  23. data/app/models/concerns/spree/calculated_adjustments.rb +33 -0
  24. data/app/models/concerns/spree/default_price.rb +34 -0
  25. data/app/models/concerns/spree/display_money.rb +32 -0
  26. data/app/models/concerns/spree/named_type.rb +12 -0
  27. data/app/models/concerns/spree/user_address.rb +30 -0
  28. data/app/models/concerns/spree/user_api_authentication.rb +13 -0
  29. data/app/models/concerns/spree/user_payment_source.rb +19 -0
  30. data/app/models/concerns/spree/user_reporting.rb +22 -0
  31. data/app/models/spree/ability.rb +74 -0
  32. data/app/models/spree/address.rb +157 -0
  33. data/app/models/spree/adjustment.rb +143 -0
  34. data/app/models/spree/app_configuration.rb +253 -0
  35. data/app/models/spree/asset.rb +6 -0
  36. data/app/models/spree/base.rb +15 -0
  37. data/app/models/spree/billing_integration.rb +21 -0
  38. data/app/models/spree/calculator.rb +47 -0
  39. data/app/models/spree/calculator/default_tax.rb +67 -0
  40. data/app/models/spree/calculator/flat_percent_item_total.rb +22 -0
  41. data/app/models/spree/calculator/flat_rate.rb +20 -0
  42. data/app/models/spree/calculator/flexi_rate.rb +33 -0
  43. data/app/models/spree/calculator/free_shipping.rb +21 -0
  44. data/app/models/spree/calculator/percent_on_line_item.rb +15 -0
  45. data/app/models/spree/calculator/percent_per_item.rb +50 -0
  46. data/app/models/spree/calculator/price_sack.rb +29 -0
  47. data/app/models/spree/calculator/returns/default_refund_amount.rb +36 -0
  48. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +22 -0
  49. data/app/models/spree/calculator/shipping/flat_rate.rb +18 -0
  50. data/app/models/spree/calculator/shipping/flexi_rate.rb +35 -0
  51. data/app/models/spree/calculator/shipping/per_item.rb +22 -0
  52. data/app/models/spree/calculator/shipping/price_sack.rb +28 -0
  53. data/app/models/spree/calculator/tiered_flat_rate.rb +37 -0
  54. data/app/models/spree/calculator/tiered_percent.rb +44 -0
  55. data/app/models/spree/carton.rb +57 -0
  56. data/app/models/spree/classification.rb +11 -0
  57. data/app/models/spree/country.rb +23 -0
  58. data/app/models/spree/credit_card.rb +197 -0
  59. data/app/models/spree/customer_return.rb +73 -0
  60. data/app/models/spree/exchange.rb +46 -0
  61. data/app/models/spree/gateway.rb +79 -0
  62. data/app/models/spree/gateway/bogus.rb +91 -0
  63. data/app/models/spree/gateway/bogus_simple.rb +26 -0
  64. data/app/models/spree/image.rb +44 -0
  65. data/app/models/spree/inventory_unit.rb +154 -0
  66. data/app/models/spree/item_adjustments.rb +85 -0
  67. data/app/models/spree/item_adjustments.rb.orig +93 -0
  68. data/app/models/spree/legacy_user.rb +38 -0
  69. data/app/models/spree/line_item.rb +183 -0
  70. data/app/models/spree/line_item_action.rb +6 -0
  71. data/app/models/spree/log_entry.rb +20 -0
  72. data/app/models/spree/option_type.rb +30 -0
  73. data/app/models/spree/option_value.rb +26 -0
  74. data/app/models/spree/option_values_variant.rb +6 -0
  75. data/app/models/spree/order.rb +811 -0
  76. data/app/models/spree/order/checkout.rb +351 -0
  77. data/app/models/spree/order/currency_updater.rb +40 -0
  78. data/app/models/spree/order/payments.rb +66 -0
  79. data/app/models/spree/order_cancellations.rb +72 -0
  80. data/app/models/spree/order_capturing.rb +49 -0
  81. data/app/models/spree/order_contents.rb +125 -0
  82. data/app/models/spree/order_inventory.rb +108 -0
  83. data/app/models/spree/order_mutex.rb +35 -0
  84. data/app/models/spree/order_promotion.rb +23 -0
  85. data/app/models/spree/order_shipping.rb +99 -0
  86. data/app/models/spree/order_stock_location.rb +15 -0
  87. data/app/models/spree/order_updater.rb +178 -0
  88. data/app/models/spree/payment.rb +292 -0
  89. data/app/models/spree/payment/processing.rb +210 -0
  90. data/app/models/spree/payment_capture_event.rb +9 -0
  91. data/app/models/spree/payment_method.rb +79 -0
  92. data/app/models/spree/payment_method/check.rb +31 -0
  93. data/app/models/spree/payment_method/store_credit.rb +127 -0
  94. data/app/models/spree/preference.rb +5 -0
  95. data/app/models/spree/preferences/configuration.rb +78 -0
  96. data/app/models/spree/preferences/preferable.rb +128 -0
  97. data/app/models/spree/preferences/preferable_class_methods.rb +64 -0
  98. data/app/models/spree/preferences/scoped_store.rb +33 -0
  99. data/app/models/spree/preferences/store.rb +93 -0
  100. data/app/models/spree/price.rb +62 -0
  101. data/app/models/spree/product.rb +347 -0
  102. data/app/models/spree/product/scopes.rb +262 -0
  103. data/app/models/spree/product_option_type.rb +7 -0
  104. data/app/models/spree/product_property.rb +25 -0
  105. data/app/models/spree/product_scope/scopes.rb +47 -0
  106. data/app/models/spree/promotion.rb +229 -0
  107. data/app/models/spree/promotion/actions/create_adjustment.rb +63 -0
  108. data/app/models/spree/promotion/actions/create_item_adjustments.rb +80 -0
  109. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +129 -0
  110. data/app/models/spree/promotion/actions/free_shipping.rb +41 -0
  111. data/app/models/spree/promotion/rules/first_order.rb +37 -0
  112. data/app/models/spree/promotion/rules/item_total.rb +61 -0
  113. data/app/models/spree/promotion/rules/one_use_per_user.rb +24 -0
  114. data/app/models/spree/promotion/rules/option_value.rb +50 -0
  115. data/app/models/spree/promotion/rules/product.rb +64 -0
  116. data/app/models/spree/promotion/rules/taxon.rb +69 -0
  117. data/app/models/spree/promotion/rules/user.rb +30 -0
  118. data/app/models/spree/promotion/rules/user_logged_in.rb +18 -0
  119. data/app/models/spree/promotion_action.rb +23 -0
  120. data/app/models/spree/promotion_builder.rb +55 -0
  121. data/app/models/spree/promotion_category.rb +6 -0
  122. data/app/models/spree/promotion_chooser.rb +30 -0
  123. data/app/models/spree/promotion_code.rb +39 -0
  124. data/app/models/spree/promotion_code/code_builder.rb +62 -0
  125. data/app/models/spree/promotion_handler/cart.rb +65 -0
  126. data/app/models/spree/promotion_handler/coupon.rb +119 -0
  127. data/app/models/spree/promotion_handler/free_shipping.rb +43 -0
  128. data/app/models/spree/promotion_handler/page.rb +24 -0
  129. data/app/models/spree/promotion_rule.rb +44 -0
  130. data/app/models/spree/property.rb +20 -0
  131. data/app/models/spree/prototype.rb +9 -0
  132. data/app/models/spree/refund.rb +96 -0
  133. data/app/models/spree/refund_reason.rb +13 -0
  134. data/app/models/spree/reimbursement.rb +188 -0
  135. data/app/models/spree/reimbursement/credit.rb +25 -0
  136. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +56 -0
  137. data/app/models/spree/reimbursement/reimbursement_type_validator.rb +15 -0
  138. data/app/models/spree/reimbursement_performer.rb +43 -0
  139. data/app/models/spree/reimbursement_tax_calculator.rb +38 -0
  140. data/app/models/spree/reimbursement_type.rb +16 -0
  141. data/app/models/spree/reimbursement_type/credit.rb +13 -0
  142. data/app/models/spree/reimbursement_type/exchange.rb +9 -0
  143. data/app/models/spree/reimbursement_type/original_payment.rb +13 -0
  144. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +70 -0
  145. data/app/models/spree/reimbursement_type/store_credit.rb +27 -0
  146. data/app/models/spree/return_authorization.rb +108 -0
  147. data/app/models/spree/return_authorization_reason.rb +7 -0
  148. data/app/models/spree/return_item.rb +311 -0
  149. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +24 -0
  150. data/app/models/spree/return_item/eligibility_validator/default.rb +30 -0
  151. data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +16 -0
  152. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +17 -0
  153. data/app/models/spree/return_item/eligibility_validator/order_completed.rb +16 -0
  154. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +17 -0
  155. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +16 -0
  156. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +34 -0
  157. data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +9 -0
  158. data/app/models/spree/returns_calculator.rb +8 -0
  159. data/app/models/spree/role.rb +10 -0
  160. data/app/models/spree/role_user.rb +17 -0
  161. data/app/models/spree/shipment.rb +427 -0
  162. data/app/models/spree/shipping_calculator.rb +22 -0
  163. data/app/models/spree/shipping_category.rb +8 -0
  164. data/app/models/spree/shipping_manifest.rb +23 -0
  165. data/app/models/spree/shipping_method.rb +69 -0
  166. data/app/models/spree/shipping_method_category.rb +6 -0
  167. data/app/models/spree/shipping_rate.rb +57 -0
  168. data/app/models/spree/state.rb +30 -0
  169. data/app/models/spree/state_change.rb +15 -0
  170. data/app/models/spree/static_model_preferences.rb +32 -0
  171. data/app/models/spree/stock/adjuster.rb +28 -0
  172. data/app/models/spree/stock/availability_validator.rb +35 -0
  173. data/app/models/spree/stock/content_item.rb +48 -0
  174. data/app/models/spree/stock/coordinator.rb +96 -0
  175. data/app/models/spree/stock/differentiator.rb +44 -0
  176. data/app/models/spree/stock/estimator.rb +70 -0
  177. data/app/models/spree/stock/inventory_unit_builder.rb +22 -0
  178. data/app/models/spree/stock/inventory_validator.rb +14 -0
  179. data/app/models/spree/stock/package.rb +131 -0
  180. data/app/models/spree/stock/packer.rb +49 -0
  181. data/app/models/spree/stock/prioritizer.rb +47 -0
  182. data/app/models/spree/stock/quantifier.rb +47 -0
  183. data/app/models/spree/stock/splitter/backordered.rb +23 -0
  184. data/app/models/spree/stock/splitter/base.rb +28 -0
  185. data/app/models/spree/stock/splitter/shipping_category.rb +32 -0
  186. data/app/models/spree/stock/splitter/weight.rb +32 -0
  187. data/app/models/spree/stock_item.rb +107 -0
  188. data/app/models/spree/stock_location.rb +128 -0
  189. data/app/models/spree/stock_movement.rb +26 -0
  190. data/app/models/spree/stock_transfer.rb +108 -0
  191. data/app/models/spree/store.rb +38 -0
  192. data/app/models/spree/store_credit.rb +267 -0
  193. data/app/models/spree/store_credit_category.rb +17 -0
  194. data/app/models/spree/store_credit_event.rb +52 -0
  195. data/app/models/spree/store_credit_type.rb +6 -0
  196. data/app/models/spree/tax_category.rb +19 -0
  197. data/app/models/spree/tax_rate.rb +199 -0
  198. data/app/models/spree/taxon.rb +103 -0
  199. data/app/models/spree/taxonomy.rb +27 -0
  200. data/app/models/spree/tracker.rb +8 -0
  201. data/app/models/spree/transfer_item.rb +58 -0
  202. data/app/models/spree/unit_cancel.rb +32 -0
  203. data/app/models/spree/user_stock_location.rb +6 -0
  204. data/app/models/spree/validations/db_maximum_length_validator.rb +22 -0
  205. data/app/models/spree/variant.rb +356 -0
  206. data/app/models/spree/variant/scopes.rb +40 -0
  207. data/app/models/spree/zone.rb +138 -0
  208. data/app/models/spree/zone_member.rb +11 -0
  209. data/app/views/layouts/spree/base_mailer.html.erb +784 -0
  210. data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +19 -0
  211. data/app/views/spree/carton_mailer/shipped_email.text.erb +16 -0
  212. data/app/views/spree/order_mailer/cancel_email.html.erb +45 -0
  213. data/app/views/spree/order_mailer/cancel_email.text.erb +16 -0
  214. data/app/views/spree/order_mailer/confirm_email.html.erb +84 -0
  215. data/app/views/spree/order_mailer/confirm_email.text.erb +38 -0
  216. data/app/views/spree/order_mailer/inventory_cancellation_email.text.erb +10 -0
  217. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +22 -0
  218. data/app/views/spree/shared/_base_mailer_footer.html.erb +20 -0
  219. data/app/views/spree/shared/_base_mailer_header.html.erb +31 -0
  220. data/app/views/spree/shared/_error_messages.html.erb +11 -0
  221. data/app/views/spree/shipment_mailer/shipped_email.html.erb +34 -0
  222. data/app/views/spree/test_mailer/test_email.html.erb +40 -0
  223. data/app/views/spree/test_mailer/test_email.text.erb +4 -0
  224. data/config/initializers/friendly_id.rb +88 -0
  225. data/config/initializers/premailer_assets.rb +1 -0
  226. data/config/initializers/user_class_extensions.rb +42 -0
  227. data/config/locales/en.yml +1534 -0
  228. data/config/routes.rb +1 -0
  229. data/db/default/spree/countries.rb +19 -0
  230. data/db/default/spree/roles.rb +2 -0
  231. data/db/default/spree/states.rb +16 -0
  232. data/db/default/spree/store_credit.rb +16 -0
  233. data/db/default/spree/stores.rb +9 -0
  234. data/db/default/spree/zones.rb +17 -0
  235. data/db/migrate/20120831092320_spree_one_two.rb +481 -0
  236. data/db/migrate/20120831092359_spree_promo_one_two.rb +45 -0
  237. data/db/migrate/20120905145253_add_tax_rate_label.rb +5 -0
  238. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +5 -0
  239. data/db/migrate/20120929093553_remove_unused_preference_columns.rb +8 -0
  240. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +5 -0
  241. data/db/migrate/20121010142909_add_states_required_to_countries.rb +5 -0
  242. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +6 -0
  243. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +11 -0
  244. data/db/migrate/20121031162139_split_prices_from_variants.rb +31 -0
  245. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +9 -0
  246. data/db/migrate/20121107184631_add_currency_to_line_items.rb +5 -0
  247. data/db/migrate/20121107194006_add_currency_to_orders.rb +5 -0
  248. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +5 -0
  249. data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +5 -0
  250. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +5 -0
  251. data/db/migrate/20121126040517_add_last_ip_to_spree_orders.rb +5 -0
  252. data/db/migrate/20121213162028_add_state_to_spree_adjustments.rb +6 -0
  253. data/db/migrate/20130114053446_add_display_on_to_spree_payment_methods.rb +9 -0
  254. data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +6 -0
  255. data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +5 -0
  256. data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +9 -0
  257. data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +5 -0
  258. data/db/migrate/20130211190146_create_spree_stock_items.rb +14 -0
  259. data/db/migrate/20130211191120_create_spree_stock_locations.rb +11 -0
  260. data/db/migrate/20130213191427_create_default_stock.rb +34 -0
  261. data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +5 -0
  262. data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +5 -0
  263. data/db/migrate/20130226191231_add_stock_location_id_to_spree_shipments.rb +5 -0
  264. data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +6 -0
  265. data/db/migrate/20130228164411_remove_on_demand_from_product_and_variant.rb +6 -0
  266. data/db/migrate/20130228210442_create_shipping_method_zone.rb +21 -0
  267. data/db/migrate/20130301162745_remove_shipping_category_id_from_shipping_method.rb +5 -0
  268. data/db/migrate/20130301162924_create_shipping_method_categories.rb +13 -0
  269. data/db/migrate/20130301205200_add_tracking_url_to_spree_shipping_methods.rb +5 -0
  270. data/db/migrate/20130304162240_create_spree_shipping_rates.rb +24 -0
  271. data/db/migrate/20130304192936_remove_category_match_attributes_from_shipping_method.rb +7 -0
  272. data/db/migrate/20130305143310_create_stock_movements.rb +12 -0
  273. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +22 -0
  274. data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +5 -0
  275. data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +5 -0
  276. data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +5 -0
  277. data/db/migrate/20130318151756_add_source_and_destination_to_stock_movements.rb +8 -0
  278. data/db/migrate/20130319062004_change_orders_total_precision.rb +8 -0
  279. data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +7 -0
  280. data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +7 -0
  281. data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +7 -0
  282. data/db/migrate/20130319183250_add_originator_to_stock_movement.rb +7 -0
  283. data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +15 -0
  284. data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +9 -0
  285. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +5 -0
  286. data/db/migrate/20130328130308_update_shipment_state_for_canceled_orders.rb +15 -0
  287. data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +9 -0
  288. data/db/migrate/20130329134939_remove_stock_item_and_variant_lock.rb +14 -0
  289. data/db/migrate/20130413230529_add_name_to_spree_credit_cards.rb +5 -0
  290. data/db/migrate/20130414000512_update_name_fields_on_spree_credit_cards.rb +13 -0
  291. data/db/migrate/20130417120034_add_index_to_source_columns_on_adjustments.rb +5 -0
  292. data/db/migrate/20130417120035_update_adjustment_states.rb +16 -0
  293. data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +15 -0
  294. data/db/migrate/20130418125341_create_spree_stock_transfers.rb +14 -0
  295. data/db/migrate/20130423110707_drop_products_count_on_hand.rb +5 -0
  296. data/db/migrate/20130423223847_set_default_shipping_rate_cost.rb +5 -0
  297. data/db/migrate/20130509115210_add_number_to_stock_transfer.rb +23 -0
  298. data/db/migrate/20130514151929_add_sku_index_to_spree_variants.rb +5 -0
  299. data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +5 -0
  300. data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +5 -0
  301. data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +5 -0
  302. data/db/migrate/20130611185927_add_user_id_index_to_spree_orders.rb +5 -0
  303. data/db/migrate/20130618041418_add_updated_at_to_spree_countries.rb +9 -0
  304. data/db/migrate/20130619012236_add_updated_at_to_spree_states.rb +9 -0
  305. data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +6 -0
  306. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +5 -0
  307. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +7 -0
  308. data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +5 -0
  309. data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +6 -0
  310. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +5 -0
  311. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +6 -0
  312. data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +5 -0
  313. data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +5 -0
  314. data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +5 -0
  315. data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +10 -0
  316. data/db/migrate/20130806022521_drop_spree_mail_methods.rb +12 -0
  317. data/db/migrate/20130806145853_set_default_stock_location_on_shipments.rb +8 -0
  318. data/db/migrate/20130807024301_upgrade_adjustments.rb +40 -0
  319. data/db/migrate/20130807024302_rename_adjustment_fields.rb +14 -0
  320. data/db/migrate/20130809164245_add_admin_name_column_to_spree_shipping_methods.rb +5 -0
  321. data/db/migrate/20130809164330_add_admin_name_column_to_spree_stock_locations.rb +5 -0
  322. data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +5 -0
  323. data/db/migrate/20130813140619_expand_order_number_size.rb +9 -0
  324. data/db/migrate/20130813232134_rename_activators_to_promotions.rb +5 -0
  325. data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +5 -0
  326. data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +5 -0
  327. data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +16 -0
  328. data/db/migrate/20130828234942_add_tax_total_to_line_items_shipments_and_orders.rb +8 -0
  329. data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +15 -0
  330. data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +19 -0
  331. data/db/migrate/20130903183026_add_code_to_spree_promotion_rules.rb +5 -0
  332. data/db/migrate/20130909115621_change_states_required_for_countries.rb +9 -0
  333. data/db/migrate/20130915032339_add_deleted_at_to_spree_stock_items.rb +5 -0
  334. data/db/migrate/20130917024658_remove_promotions_event_name_field.rb +5 -0
  335. data/db/migrate/20130924040529_add_promo_total_to_line_items_and_shipments_and_orders.rb +7 -0
  336. data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +16 -0
  337. data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +5 -0
  338. data/db/migrate/20131107132123_add_tax_category_to_variants.rb +6 -0
  339. data/db/migrate/20131113035136_add_channel_to_spree_orders.rb +5 -0
  340. data/db/migrate/20131118043959_add_included_to_adjustments.rb +5 -0
  341. data/db/migrate/20131118050234_rename_tax_total_fields.rb +11 -0
  342. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +21 -0
  343. data/db/migrate/20131120234456_add_updated_at_to_variants.rb +5 -0
  344. data/db/migrate/20131127001002_add_position_to_classifications.rb +5 -0
  345. data/db/migrate/20131211112807_create_spree_orders_promotions.rb +8 -0
  346. data/db/migrate/20131211192741_unique_shipping_method_categories.rb +24 -0
  347. data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +5 -0
  348. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +8 -0
  349. data/db/migrate/20140106224208_rename_permalink_to_slug_for_products.rb +5 -0
  350. data/db/migrate/20140120160805_add_index_to_variant_id_and_currency_on_prices.rb +5 -0
  351. data/db/migrate/20140124023232_rename_activator_id_in_rules_and_actions_to_promotion_id.rb +6 -0
  352. data/db/migrate/20140129024326_add_deleted_at_to_spree_prices.rb +5 -0
  353. data/db/migrate/20140203161722_add_approver_id_and_approved_at_to_orders.rb +6 -0
  354. data/db/migrate/20140204115338_add_confirmation_delivered_to_spree_orders.rb +5 -0
  355. data/db/migrate/20140204192230_add_auto_capture_to_payment_methods.rb +5 -0
  356. data/db/migrate/20140205120320_create_spree_payment_capture_events.rb +12 -0
  357. data/db/migrate/20140205144710_add_uncaptured_amount_to_payments.rb +5 -0
  358. data/db/migrate/20140205181631_default_variant_weight_to_zero.rb +11 -0
  359. data/db/migrate/20140207085910_add_tax_category_id_to_shipping_methods.rb +5 -0
  360. data/db/migrate/20140207093021_add_tax_rate_id_to_shipping_rates.rb +5 -0
  361. data/db/migrate/20140211040159_add_pre_tax_amount_to_line_items_and_shipments.rb +6 -0
  362. data/db/migrate/20140213184916_add_more_indexes.rb +13 -0
  363. data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +5 -0
  364. data/db/migrate/20140227112348_add_preference_store_to_everything.rb +8 -0
  365. data/db/migrate/20140307235515_add_user_id_to_spree_credit_cards.rb +13 -0
  366. data/db/migrate/20140309023735_migrate_old_preferences.rb +23 -0
  367. data/db/migrate/20140309024355_create_spree_stores.rb +25 -0
  368. data/db/migrate/20140309033438_create_store_from_preferences.rb +30 -0
  369. data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +6 -0
  370. data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +8 -0
  371. data/db/migrate/20140331100557_add_additional_store_fields.rb +8 -0
  372. data/db/migrate/20140410141842_add_many_missing_indexes.rb +17 -0
  373. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +66 -0
  374. data/db/migrate/20140415041315_add_user_id_created_by_id_index_to_order.rb +5 -0
  375. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +8 -0
  376. data/db/migrate/20140518174634_add_token_to_spree_orders.rb +5 -0
  377. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +29 -0
  378. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +10 -0
  379. data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +6 -0
  380. data/db/migrate/20140609201656_add_deleted_at_to_spree_promotion_actions.rb +6 -0
  381. data/db/migrate/20140616202624_remove_uncaptured_amount_from_spree_payments.rb +5 -0
  382. data/db/migrate/20140625214618_create_spree_refunds.rb +12 -0
  383. data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +12 -0
  384. data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +5 -0
  385. data/db/migrate/20140708132019_create_order_mutex.rb +11 -0
  386. data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +10 -0
  387. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +55 -0
  388. data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +7 -0
  389. data/db/migrate/20140710190048_drop_return_authorization_amount.rb +5 -0
  390. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +28 -0
  391. data/db/migrate/20140713140527_create_spree_refund_reasons.rb +14 -0
  392. data/db/migrate/20140713142214_rename_return_authorization_reason.rb +5 -0
  393. data/db/migrate/20140715182625_create_spree_promotion_categories.rb +11 -0
  394. data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +9 -0
  395. data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +6 -0
  396. data/db/migrate/20140717155155_create_default_refund_reason.rb +9 -0
  397. data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +7 -0
  398. data/db/migrate/20140718133010_create_spree_customer_returns.rb +9 -0
  399. data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +6 -0
  400. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +15 -0
  401. data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +5 -0
  402. data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +13 -0
  403. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +15 -0
  404. data/db/migrate/20140725131539_create_spree_reimbursements.rb +21 -0
  405. data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +5 -0
  406. data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +7 -0
  407. data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +5 -0
  408. data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +20 -0
  409. data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +10 -0
  410. data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +5 -0
  411. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +10 -0
  412. data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +9 -0
  413. data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +10 -0
  414. data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +7 -0
  415. data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +5 -0
  416. data/db/migrate/20140927193717_default_pre_tax_amount_should_be_zero.rb +6 -0
  417. data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +5 -0
  418. data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +6 -0
  419. data/db/migrate/20141009204607_add_store_id_to_orders.rb +8 -0
  420. data/db/migrate/20141012083513_create_spree_taxons_prototypes.rb +8 -0
  421. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +5 -0
  422. data/db/migrate/20141023005240_add_counter_cache_from_spree_variants_to_spree_stock_items.rb +8 -0
  423. data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +13 -0
  424. data/db/migrate/20141105213646_update_classifications_positions.rb +9 -0
  425. data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +5 -0
  426. data/db/migrate/20141231151320_add_default_column_to_price.rb +5 -0
  427. data/db/migrate/20150112194216_add_position_to_stock_location.rb +5 -0
  428. data/db/migrate/20150113002122_create_spree_promotion_codes.rb +13 -0
  429. data/db/migrate/20150113002123_create_adjustment_promotion_code_association.rb +6 -0
  430. data/db/migrate/20150121202544_add_restock_inventory_to_stock_location.rb +5 -0
  431. data/db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb +5 -0
  432. data/db/migrate/20150127161843_create_order_stock_locations.rb +12 -0
  433. data/db/migrate/20150203151219_add_fulfillable_to_stock_location.rb +5 -0
  434. data/db/migrate/20150205210527_add_code_to_refund_reason.rb +5 -0
  435. data/db/migrate/20150213160148_add_promotion_code_id_to_orders_promotions.rb +7 -0
  436. data/db/migrate/20150213163612_add_approver_name_to_spree_orders.rb +5 -0
  437. data/db/migrate/20150225205344_move_promotion_code_to_promotion_code_value.rb +65 -0
  438. data/db/migrate/20150226195213_downcase_promotion_codes_values.rb +11 -0
  439. data/db/migrate/20150227161934_add_order_ids_to_adjustments_where_missing.rb +9 -0
  440. data/db/migrate/20150303212749_add_per_code_usage_limit_to_promotions.rb +5 -0
  441. data/db/migrate/20150303212826_remove_usage_limit_from_promotion_codes.rb +5 -0
  442. data/db/migrate/20150304211616_add_timestamps_to_order_promotions.rb +6 -0
  443. data/db/migrate/20150305043021_create_spree_cartons.rb +24 -0
  444. data/db/migrate/20150305210403_add_timestamps_to_spree_roles_users.rb +7 -0
  445. data/db/migrate/20150313140507_remove_considered_risky_from_spree_orders.rb +5 -0
  446. data/db/migrate/20150313192827_add_index_to_inventory_units_carton_id.rb +5 -0
  447. data/db/migrate/20150313201235_add_imported_from_shipment_id_to_cartons.rb +8 -0
  448. data/db/migrate/20150313201503_copy_shipped_shipments_to_cartons.rb +13 -0
  449. data/db/migrate/20150330144639_create_spree_user_stock_locations.rb +10 -0
  450. data/db/migrate/20150331134544_add_stock_location_code.rb +5 -0
  451. data/db/migrate/20150402210430_create_unit_cancels.rb +10 -0
  452. data/db/migrate/20150407173305_add_fields_to_stock_transfer.rb +12 -0
  453. data/db/migrate/20150407173531_create_transfer_items.rb +14 -0
  454. data/db/migrate/20150424143547_drop_stock_transfer_type.rb +10 -0
  455. data/db/migrate/20150424161102_add_stock_transfer_finalized_at.rb +8 -0
  456. data/db/migrate/20150429125822_rename_stock_transfer_reference.rb +5 -0
  457. data/db/migrate/20150430233803_create_line_item_actions.rb +10 -0
  458. data/db/migrate/20150506181159_create_spree_store_credit_categories.rb +10 -0
  459. data/db/migrate/20150506181244_create_spree_store_credits.rb +19 -0
  460. data/db/migrate/20150506181539_create_spree_store_credit_events.rb +17 -0
  461. data/db/migrate/20150506181611_create_spree_store_credit_payment_method.rb +13 -0
  462. data/db/migrate/20150506181715_create_store_credit_types.rb +17 -0
  463. data/db/migrate/20150506182045_create_store_credit_reimbursement_type.rb +5 -0
  464. data/db/migrate/20150508044622_add_resellable_to_return_items.rb +5 -0
  465. data/db/migrate/20150514185559_add_invalidated_at_to_spree_store_credits.rb +5 -0
  466. data/db/migrate/20150514201836_migrate_deleted_store_credits_to_invalidated.rb +13 -0
  467. data/db/migrate/20150515170322_add_check_stock_on_transfer.rb +5 -0
  468. data/db/migrate/20150528125647_delete_inventory_units_without_shipment.rb +25 -0
  469. data/db/migrate/20150601191251_add_deleted_at_to_stock_transfers.rb +5 -0
  470. data/db/migrate/20150601204148_add_deleted_at_to_transfer_items.rb +5 -0
  471. data/db/migrate/20150609193231_add_preferences_to_promotion_actions.rb +5 -0
  472. data/db/migrate/20150610182638_add_id_to_spree_option_values_variants.rb +5 -0
  473. data/db/migrate/20150611200247_add_frontend_viewable_to_spree_orders.rb +5 -0
  474. data/db/migrate/20150612205731_remove_spree_configurations.rb +15 -0
  475. data/db/migrate/20150618191713_remove_credit_card_address_id.rb +7 -0
  476. data/db/migrate/20150626214817_remove_counter_cache_from_spree_variants_to_spree_stock_items.rb +10 -0
  477. data/db/seeds.rb +5 -0
  478. data/lib/generators/spree/custom_user/custom_user_generator.rb +56 -0
  479. data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +36 -0
  480. data/lib/generators/spree/custom_user/templates/initializer.rb.tt +1 -0
  481. data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -0
  482. data/lib/generators/spree/dummy/dummy_generator.rb +140 -0
  483. data/lib/generators/spree/dummy/templates/initializers/custom_user.rb +1 -0
  484. data/lib/generators/spree/dummy/templates/initializers/devise.rb +3 -0
  485. data/lib/generators/spree/dummy/templates/rails/application.rb +10 -0
  486. data/lib/generators/spree/dummy/templates/rails/boot.rb +6 -0
  487. data/lib/generators/spree/dummy/templates/rails/database.yml +65 -0
  488. data/lib/generators/spree/dummy/templates/rails/routes.rb +2 -0
  489. data/lib/generators/spree/dummy/templates/rails/script/rails +6 -0
  490. data/lib/generators/spree/dummy/templates/rails/test.rb +34 -0
  491. data/lib/generators/spree/install/install_generator.rb +191 -0
  492. data/lib/generators/spree/install/templates/config/initializers/spree.rb +41 -0
  493. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +13 -0
  494. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +13 -0
  495. data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/backend/all.css +12 -0
  496. data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +12 -0
  497. data/lib/solidus_core.rb +1 -0
  498. data/lib/spree/core.rb +95 -0
  499. data/lib/spree/core/controller_helpers/auth.rb +83 -0
  500. data/lib/spree/core/controller_helpers/common.rb +74 -0
  501. data/lib/spree/core/controller_helpers/order.rb +106 -0
  502. data/lib/spree/core/controller_helpers/respond_with.rb +65 -0
  503. data/lib/spree/core/controller_helpers/search.rb +14 -0
  504. data/lib/spree/core/controller_helpers/store.rb +19 -0
  505. data/lib/spree/core/controller_helpers/strong_parameters.rb +42 -0
  506. data/lib/spree/core/delegate_belongs_to.rb +95 -0
  507. data/lib/spree/core/engine.rb +114 -0
  508. data/lib/spree/core/environment.rb +15 -0
  509. data/lib/spree/core/environment/calculators.rb +12 -0
  510. data/lib/spree/core/environment_extension.rb +25 -0
  511. data/lib/spree/core/importer.rb +9 -0
  512. data/lib/spree/core/importer/order.rb +202 -0
  513. data/lib/spree/core/importer/product.rb +62 -0
  514. data/lib/spree/core/permalinks.rb +71 -0
  515. data/lib/spree/core/product_duplicator.rb +74 -0
  516. data/lib/spree/core/product_filters.rb +194 -0
  517. data/lib/spree/core/routes.rb +46 -0
  518. data/lib/spree/core/search/base.rb +97 -0
  519. data/lib/spree/core/search/variant.rb +46 -0
  520. data/lib/spree/core/unreturned_item_charger.rb +102 -0
  521. data/lib/spree/core/validators/email.rb +7 -0
  522. data/lib/spree/core/version.rb +5 -0
  523. data/lib/spree/i18n.rb +37 -0
  524. data/lib/spree/i18n/base.rb +17 -0
  525. data/lib/spree/i18n/initializer.rb +1 -0
  526. data/lib/spree/localized_number.rb +24 -0
  527. data/lib/spree/migrations.rb +76 -0
  528. data/lib/spree/money.rb +72 -0
  529. data/lib/spree/permitted_attributes.rb +114 -0
  530. data/lib/spree/promo/environment.rb +9 -0
  531. data/lib/spree/responder.rb +45 -0
  532. data/lib/spree/testing_support/ability_helpers.rb +105 -0
  533. data/lib/spree/testing_support/authorization_helpers.rb +63 -0
  534. data/lib/spree/testing_support/bar_ability.rb +14 -0
  535. data/lib/spree/testing_support/caching.rb +47 -0
  536. data/lib/spree/testing_support/capybara_ext.rb +163 -0
  537. data/lib/spree/testing_support/common_rake.rb +40 -0
  538. data/lib/spree/testing_support/controller_requests.rb +83 -0
  539. data/lib/spree/testing_support/extension_rake.rb +10 -0
  540. data/lib/spree/testing_support/factories.rb +20 -0
  541. data/lib/spree/testing_support/factories/address_factory.rb +22 -0
  542. data/lib/spree/testing_support/factories/adjustment_factory.rb +26 -0
  543. data/lib/spree/testing_support/factories/calculator_factory.rb +24 -0
  544. data/lib/spree/testing_support/factories/carton_factory.rb +21 -0
  545. data/lib/spree/testing_support/factories/country_factory.rb +9 -0
  546. data/lib/spree/testing_support/factories/credit_card_factory.rb +10 -0
  547. data/lib/spree/testing_support/factories/customer_return_factory.rb +31 -0
  548. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +10 -0
  549. data/lib/spree/testing_support/factories/line_item_factory.rb +14 -0
  550. data/lib/spree/testing_support/factories/options_factory.rb +13 -0
  551. data/lib/spree/testing_support/factories/order_factory.rb +100 -0
  552. data/lib/spree/testing_support/factories/order_promotion_factory.rb +6 -0
  553. data/lib/spree/testing_support/factories/payment_factory.rb +28 -0
  554. data/lib/spree/testing_support/factories/payment_method_factory.rb +27 -0
  555. data/lib/spree/testing_support/factories/price_factory.rb +7 -0
  556. data/lib/spree/testing_support/factories/product_factory.rb +36 -0
  557. data/lib/spree/testing_support/factories/product_option_type_factory.rb +6 -0
  558. data/lib/spree/testing_support/factories/product_property_factory.rb +6 -0
  559. data/lib/spree/testing_support/factories/promotion_category_factory.rb +6 -0
  560. data/lib/spree/testing_support/factories/promotion_code_factory.rb +6 -0
  561. data/lib/spree/testing_support/factories/promotion_factory.rb +62 -0
  562. data/lib/spree/testing_support/factories/property_factory.rb +6 -0
  563. data/lib/spree/testing_support/factories/prototype_factory.rb +6 -0
  564. data/lib/spree/testing_support/factories/refund_factory.rb +14 -0
  565. data/lib/spree/testing_support/factories/reimbursement_factory.rb +16 -0
  566. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +7 -0
  567. data/lib/spree/testing_support/factories/return_authorization_factory.rb +18 -0
  568. data/lib/spree/testing_support/factories/return_item_factory.rb +16 -0
  569. data/lib/spree/testing_support/factories/role_factory.rb +9 -0
  570. data/lib/spree/testing_support/factories/shipment_factory.rb +28 -0
  571. data/lib/spree/testing_support/factories/shipping_category_factory.rb +5 -0
  572. data/lib/spree/testing_support/factories/shipping_method_factory.rb +25 -0
  573. data/lib/spree/testing_support/factories/state_factory.rb +13 -0
  574. data/lib/spree/testing_support/factories/stock_factory.rb +31 -0
  575. data/lib/spree/testing_support/factories/stock_item_factory.rb +9 -0
  576. data/lib/spree/testing_support/factories/stock_location_factory.rb +28 -0
  577. data/lib/spree/testing_support/factories/stock_movement_factory.rb +11 -0
  578. data/lib/spree/testing_support/factories/stock_transfer_factory.rb +28 -0
  579. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +6 -0
  580. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +15 -0
  581. data/lib/spree/testing_support/factories/store_credit_factory.rb +10 -0
  582. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +13 -0
  583. data/lib/spree/testing_support/factories/store_factory.rb +8 -0
  584. data/lib/spree/testing_support/factories/tax_category_factory.rb +7 -0
  585. data/lib/spree/testing_support/factories/tax_rate_factory.rb +8 -0
  586. data/lib/spree/testing_support/factories/taxon_factory.rb +7 -0
  587. data/lib/spree/testing_support/factories/taxonomy_factory.rb +5 -0
  588. data/lib/spree/testing_support/factories/tracker_factory.rb +7 -0
  589. data/lib/spree/testing_support/factories/user_factory.rb +22 -0
  590. data/lib/spree/testing_support/factories/variant_factory.rb +39 -0
  591. data/lib/spree/testing_support/factories/zone_factory.rb +17 -0
  592. data/lib/spree/testing_support/flash.rb +27 -0
  593. data/lib/spree/testing_support/i18n.rb +98 -0
  594. data/lib/spree/testing_support/mail.rb +20 -0
  595. data/lib/spree/testing_support/order_walkthrough.rb +78 -0
  596. data/lib/spree/testing_support/preferences.rb +29 -0
  597. data/lib/spree/testing_support/rspec-activemodel-mocks_patch.rb +8 -0
  598. data/lib/spree/testing_support/url_helpers.rb +9 -0
  599. data/lib/spree_core.rb +1 -0
  600. data/lib/tasks/core.rake +101 -0
  601. data/lib/tasks/email.rake +7 -0
  602. data/lib/tasks/exchanges.rake +48 -0
  603. data/lib/tasks/migrations/copy_shipped_shipments_to_cartons.rake +180 -0
  604. data/lib/tasks/order_capturing.rake +23 -0
  605. data/vendor/assets/javascripts/jquery-migrate-1.0.0.js +498 -0
  606. data/vendor/assets/javascripts/jquery.payment.js +497 -0
  607. data/vendor/assets/javascripts/jsuri.js +2 -0
  608. data/vendor/assets/stylesheets/normalize.css +375 -0
  609. data/vendor/assets/stylesheets/skeleton.css +242 -0
  610. metadata +993 -0
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ class OrderStockLocation < ActiveRecord::Base
3
+ belongs_to :variant, class_name: "Spree::Variant"
4
+ belongs_to :stock_location, class_name: "Spree::StockLocation"
5
+ belongs_to :order, class_name: "Spree::Order"
6
+
7
+ def self.fulfill_for_order_with_stock_location(order, stock_location)
8
+ self.where(order_id: order.id, stock_location_id: stock_location.id).each(&:fulfill_shipment!)
9
+ end
10
+
11
+ def fulfill_shipment!
12
+ self.update_attributes!(shipment_fulfilled: true)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,178 @@
1
+ module Spree
2
+ class OrderUpdater
3
+ attr_reader :order
4
+ delegate :payments, :line_items, :adjustments, :all_adjustments, :shipments, :update_hooks, :quantity, to: :order
5
+
6
+ def initialize(order)
7
+ @order = order
8
+ end
9
+
10
+ # This is a multi-purpose method for processing logic related to changes in the Order.
11
+ # It is meant to be called from various observers so that the Order is aware of changes
12
+ # that affect totals and other values stored in the Order.
13
+ #
14
+ # This method should never do anything to the Order that results in a save call on the
15
+ # object with callbacks (otherwise you will end up in an infinite recursion as the
16
+ # associations try to save and then in turn try to call +update!+ again.)
17
+ def update
18
+ update_item_count
19
+ update_totals
20
+ if order.completed?
21
+ update_payment_state
22
+ update_shipments
23
+ update_shipment_state
24
+ end
25
+ run_hooks
26
+ persist_totals
27
+ end
28
+
29
+ def run_hooks
30
+ update_hooks.each { |hook| order.send hook }
31
+ end
32
+
33
+ def recalculate_adjustments
34
+ all_adjustments.includes(:adjustable).map(&:adjustable).uniq.each { |adjustable| Spree::ItemAdjustments.new(adjustable).update }
35
+ end
36
+
37
+ # Updates the following Order total values:
38
+ #
39
+ # +payment_total+ The total value of all finalized Payments (NOTE: non-finalized Payments are excluded)
40
+ # +item_total+ The total value of all LineItems
41
+ # +adjustment_total+ The total value of all adjustments (promotions, credits, etc.)
42
+ # +promo_total+ The total value of all promotion adjustments
43
+ # +total+ The so-called "order total." This is equivalent to +item_total+ plus +adjustment_total+.
44
+ def update_totals
45
+ update_payment_total
46
+ update_item_total
47
+ update_shipment_total
48
+ update_adjustment_total
49
+ end
50
+
51
+
52
+ # give each of the shipments a chance to update themselves
53
+ def update_shipments
54
+ shipments.each do |shipment|
55
+ next unless shipment.persisted?
56
+ shipment.update!(order)
57
+ shipment.refresh_rates
58
+ shipment.update_amounts
59
+ end
60
+ end
61
+
62
+ def update_payment_total
63
+ order.payment_total = payments.completed.includes(:refunds).inject(0) { |sum, payment| sum + payment.amount - payment.refunds.sum(:amount) }
64
+ end
65
+
66
+ def update_shipment_total
67
+ order.shipment_total = shipments.sum(:cost)
68
+ update_order_total
69
+ end
70
+
71
+ def update_order_total
72
+ order.total = order.item_total + order.shipment_total + order.adjustment_total
73
+ end
74
+
75
+ def update_adjustment_total
76
+ recalculate_adjustments
77
+ order.adjustment_total = line_items.sum(:adjustment_total) +
78
+ shipments.sum(:adjustment_total) +
79
+ adjustments.eligible.sum(:amount)
80
+ order.included_tax_total = line_items.sum(:included_tax_total) + shipments.sum(:included_tax_total)
81
+ order.additional_tax_total = line_items.sum(:additional_tax_total) + shipments.sum(:additional_tax_total)
82
+
83
+ order.promo_total = line_items.sum(:promo_total) +
84
+ shipments.sum(:promo_total) +
85
+ adjustments.promotion.eligible.sum(:amount)
86
+
87
+ update_order_total
88
+ end
89
+
90
+ def update_item_count
91
+ order.item_count = quantity
92
+ end
93
+
94
+ def update_item_total
95
+ order.item_total = line_items.sum('price * quantity')
96
+ update_order_total
97
+ end
98
+
99
+ def persist_totals
100
+ order.update_columns(
101
+ payment_state: order.payment_state,
102
+ shipment_state: order.shipment_state,
103
+ item_total: order.item_total,
104
+ item_count: order.item_count,
105
+ adjustment_total: order.adjustment_total,
106
+ included_tax_total: order.included_tax_total,
107
+ additional_tax_total: order.additional_tax_total,
108
+ payment_total: order.payment_total,
109
+ shipment_total: order.shipment_total,
110
+ promo_total: order.promo_total,
111
+ total: order.total,
112
+ updated_at: Time.now,
113
+ )
114
+ end
115
+
116
+ # Updates the +shipment_state+ attribute according to the following logic:
117
+ #
118
+ # shipped when all Shipments are in the "shipped" state
119
+ # partial when at least one Shipment has a state of "shipped" and there is another Shipment with a state other than "shipped"
120
+ # or there are InventoryUnits associated with the order that have a state of "sold" but are not associated with a Shipment.
121
+ # ready when all Shipments are in the "ready" state
122
+ # backorder when there is backordered inventory associated with an order
123
+ # pending when all Shipments are in the "pending" state
124
+ #
125
+ # The +shipment_state+ value helps with reporting, etc. since it provides a quick and easy way to locate Orders needing attention.
126
+ def update_shipment_state
127
+ if order.backordered?
128
+ order.shipment_state = 'backorder'
129
+ else
130
+ # get all the shipment states for this order
131
+ shipment_states = shipments.states
132
+ if shipment_states.size > 1
133
+ # multiple shiment states means it's most likely partially shipped
134
+ order.shipment_state = 'partial'
135
+ else
136
+ # will return nil if no shipments are found
137
+ order.shipment_state = shipment_states.first
138
+ # TODO inventory unit states?
139
+ # if order.shipment_state && order.inventory_units.where(:shipment_id => nil).exists?
140
+ # shipments exist but there are unassigned inventory units
141
+ # order.shipment_state = 'partial'
142
+ # end
143
+ end
144
+ end
145
+
146
+ order.state_changed('shipment')
147
+ order.shipment_state
148
+ end
149
+
150
+ # Updates the +payment_state+ attribute according to the following logic:
151
+ #
152
+ # paid when +payment_total+ is equal to +total+
153
+ # balance_due when +payment_total+ is less than +total+
154
+ # credit_owed when +payment_total+ is greater than +total+
155
+ # failed when most recent payment is in the failed state
156
+ #
157
+ # The +payment_state+ value helps with reporting, etc. since it provides a quick and easy way to locate Orders needing attention.
158
+ def update_payment_state
159
+ last_state = order.payment_state
160
+ if payments.present? && payments.valid.size == 0 && order.outstanding_balance != 0
161
+ order.payment_state = 'failed'
162
+ elsif order.state == 'canceled' && order.payment_total == 0
163
+ order.payment_state = 'void'
164
+ else
165
+ order.payment_state = 'balance_due' if order.outstanding_balance > 0
166
+ order.payment_state = 'credit_owed' if order.outstanding_balance < 0
167
+ order.payment_state = 'paid' if !order.outstanding_balance?
168
+ end
169
+ order.state_changed('payment') if last_state != order.payment_state
170
+ order.payment_state
171
+ end
172
+
173
+ private
174
+ def round_money(n)
175
+ (n * 100).round / 100.0
176
+ end
177
+ end
178
+ end
@@ -0,0 +1,292 @@
1
+ module Spree
2
+ class Payment < Spree::Base
3
+ include Spree::Payment::Processing
4
+
5
+ IDENTIFIER_CHARS = (('A'..'Z').to_a + ('0'..'9').to_a - %w(0 1 I O)).freeze
6
+ NON_RISKY_AVS_CODES = ['B', 'D', 'H', 'J', 'M', 'Q', 'T', 'V', 'X', 'Y'].freeze
7
+ RISKY_AVS_CODES = ['A', 'C', 'E', 'F', 'G', 'I', 'K', 'L', 'N', 'O', 'P', 'R', 'S', 'U', 'W', 'Z'].freeze
8
+
9
+ belongs_to :order, class_name: 'Spree::Order', touch: true, inverse_of: :payments
10
+ belongs_to :source, polymorphic: true
11
+ belongs_to :payment_method, class_name: 'Spree::PaymentMethod', inverse_of: :payments
12
+
13
+ has_many :offsets, -> { offset_payment }, class_name: "Spree::Payment", foreign_key: :source_id
14
+ has_many :log_entries, as: :source
15
+ has_many :state_changes, as: :stateful
16
+ has_many :capture_events, :class_name => 'Spree::PaymentCaptureEvent'
17
+ has_many :refunds, inverse_of: :payment
18
+
19
+ before_validation :validate_source, unless: :invalid?
20
+ before_create :set_unique_identifier
21
+
22
+ after_save :create_payment_profile, if: :profiles_supported?
23
+
24
+ # update the order totals, etc.
25
+ after_save :update_order
26
+
27
+ after_create :create_eligible_credit_event
28
+
29
+ # invalidate previously entered payments
30
+ after_create :invalidate_old_payments
31
+
32
+ attr_accessor :source_attributes, :request_env
33
+
34
+ after_initialize :build_source
35
+
36
+ validates :amount, numericality: true
37
+ validates :source, presence: true, if: :source_required?
38
+
39
+ default_scope -> { order("#{self.table_name}.created_at") }
40
+
41
+ scope :from_credit_card, -> { where(source_type: 'Spree::CreditCard') }
42
+ scope :with_state, ->(s) { where(state: s.to_s) }
43
+ # "offset" is reserved by activerecord
44
+ scope :offset_payment, -> { where("source_type = 'Spree::Payment' AND amount < 0 AND state = 'completed'") }
45
+
46
+ scope :checkout, -> { with_state('checkout') }
47
+ scope :completed, -> { with_state('completed') }
48
+ scope :pending, -> { with_state('pending') }
49
+ scope :processing, -> { with_state('processing') }
50
+ scope :failed, -> { with_state('failed') }
51
+
52
+ scope :risky, -> { where("avs_response IN (?) OR (cvv_response_code IS NOT NULL and cvv_response_code != 'M') OR state = 'failed'", RISKY_AVS_CODES) }
53
+ scope :valid, -> { where.not(state: %w(failed invalid)) }
54
+
55
+ scope :store_credits, -> { where(source_type: Spree::StoreCredit.to_s) }
56
+ scope :not_store_credits, -> { where(arel_table[:source_type].not_eq(Spree::StoreCredit.to_s).or(arel_table[:source_type].eq(nil))) }
57
+
58
+ # order state machine (see http://github.com/pluginaweek/state_machine/tree/master for details)
59
+ state_machine initial: :checkout do
60
+ # With card payments, happens before purchase or authorization happens
61
+ #
62
+ # Setting it after creating a profile and authorizing a full amount will
63
+ # prevent the payment from being authorized again once Order transitions
64
+ # to complete
65
+ event :started_processing do
66
+ transition from: [:checkout, :pending, :completed, :processing], to: :processing
67
+ end
68
+ # When processing during checkout fails
69
+ event :failure do
70
+ transition from: [:pending, :processing], to: :failed
71
+ end
72
+ # With card payments this represents authorizing the payment
73
+ event :pend do
74
+ transition from: [:checkout, :processing], to: :pending
75
+ end
76
+ # With card payments this represents completing a purchase or capture transaction
77
+ event :complete do
78
+ transition from: [:processing, :pending, :checkout], to: :completed
79
+ end
80
+ event :void do
81
+ transition from: [:pending, :processing, :completed, :checkout], to: :void
82
+ end
83
+ # when the card brand isnt supported
84
+ event :invalidate do
85
+ transition from: [:checkout], to: :invalid
86
+ end
87
+
88
+ after_transition do |payment, transition|
89
+ payment.state_changes.create!(
90
+ previous_state: transition.from,
91
+ next_state: transition.to,
92
+ name: 'payment',
93
+ )
94
+ end
95
+ end
96
+
97
+ # @return [String] this payment's response code
98
+ def transaction_id
99
+ response_code
100
+ end
101
+
102
+ # @return [String] this payment's currency
103
+ delegate :currency, to: :order
104
+
105
+ # @return [Spree::Money] this amount of this payment as money object
106
+ def money
107
+ Spree::Money.new(amount, { currency: currency })
108
+ end
109
+ alias display_amount money
110
+
111
+ # Sets the amount, parsing it based on i18n settings if it is a string.
112
+ #
113
+ # @param amount [BigDecimal, String] the desired new amount
114
+ def amount=(amount)
115
+ self[:amount] =
116
+ case amount
117
+ when String
118
+ separator = I18n.t('number.currency.format.separator')
119
+ number = amount.delete("^0-9-#{separator}\.").tr(separator, '.')
120
+ number.to_d if number.present?
121
+ end || amount
122
+ end
123
+
124
+ # The total amount of the offsets (for old-style refunds) for this payment.
125
+ #
126
+ # @return [BigDecimal] the total amount of this payment's offsets
127
+ def offsets_total
128
+ offsets.pluck(:amount).sum
129
+ end
130
+
131
+ # The total amount this payment can be credited.
132
+ #
133
+ # @return [BigDecimal] the amount of this payment minus the offsets
134
+ # (old-style refunds) and refunds
135
+ def credit_allowed
136
+ amount - (offsets_total.abs + refunds.sum(:amount))
137
+ end
138
+
139
+ # @return [Boolean] true when this payment can be credited
140
+ def can_credit?
141
+ credit_allowed > 0
142
+ end
143
+
144
+ # When this is a new record without a source, builds a new source based on
145
+ # this payment's payment method and associates it correctly.
146
+ #
147
+ # @see https://github.com/spree/spree/issues/981
148
+ def build_source
149
+ return unless new_record?
150
+ if source_attributes.present? && source.blank? && payment_method.try(:payment_source_class)
151
+ self.source = payment_method.payment_source_class.new(source_attributes)
152
+ self.source.payment_method_id = payment_method.id
153
+ self.source.user_id = self.order.user_id if self.order
154
+ end
155
+ end
156
+
157
+ # @return [Array<String>] the actions available on this payment
158
+ def actions
159
+ sa = source_actions
160
+ sa |= ["failure"] if processing?
161
+ sa
162
+ end
163
+
164
+ # @return [Object] the source of ths payment
165
+ def payment_source
166
+ res = source.is_a?(Payment) ? source.source : source
167
+ res || payment_method
168
+ end
169
+
170
+ # @return [Boolean] true when this payment is risky based on address
171
+ def is_avs_risky?
172
+ return false if avs_response.blank? || NON_RISKY_AVS_CODES.include?(avs_response)
173
+ return true
174
+ end
175
+
176
+ # @return [Boolean] true when this payment is risky based on cvv
177
+ def is_cvv_risky?
178
+ return false if cvv_response_code == "M"
179
+ return false if cvv_response_code.nil?
180
+ return false if cvv_response_message.present?
181
+ return true
182
+ end
183
+
184
+ # @return [BigDecimal] the total amount captured on this payment
185
+ def captured_amount
186
+ capture_events.sum(:amount)
187
+ end
188
+
189
+ # @return [BigDecimal] the total amount left uncaptured on this payment
190
+ def uncaptured_amount
191
+ amount - captured_amount
192
+ end
193
+
194
+ # @return [Boolean] true when the payment method exists and is a store credit payment method
195
+ def store_credit?
196
+ payment_method.try!(:store_credit?)
197
+ end
198
+
199
+ private
200
+
201
+ def source_actions
202
+ return [] unless payment_source and payment_source.respond_to? :actions
203
+ payment_source.actions.select { |action| !payment_source.respond_to?("can_#{action}?") or payment_source.send("can_#{action}?", self) }
204
+ end
205
+
206
+ def validate_source
207
+ if source && !source.valid?
208
+ source.errors.each do |field, error|
209
+ field_name = I18n.t("activerecord.attributes.#{source.class.to_s.underscore}.#{field}")
210
+ self.errors.add(Spree.t(source.class.to_s.demodulize.underscore), "#{field_name} #{error}")
211
+ end
212
+ end
213
+ return !errors.present?
214
+ end
215
+
216
+ def source_required?
217
+ payment_method.present? && payment_method.source_required?
218
+ end
219
+
220
+ def profiles_supported?
221
+ payment_method.respond_to?(:payment_profiles_supported?) && payment_method.payment_profiles_supported?
222
+ end
223
+
224
+ def create_payment_profile
225
+ # Don't attempt to create on bad payments.
226
+ return if %w(invalid failed).include?(state)
227
+ # Payment profile cannot be created without source
228
+ return unless source
229
+ # Imported payments shouldn't create a payment profile.
230
+ return if source.imported
231
+
232
+ payment_method.create_profile(self)
233
+ rescue ActiveMerchant::ConnectionError => e
234
+ gateway_error e
235
+ end
236
+
237
+ def invalidate_old_payments
238
+ if !store_credit? && !['invalid', 'failed'].include?(state)
239
+ order.payments.checkout.where(payment_method: payment_method).where("id != ?", self.id).each do |payment|
240
+ payment.invalidate!
241
+ end
242
+ end
243
+ end
244
+
245
+ def update_order
246
+ if completed? || void?
247
+ order.updater.update_payment_total
248
+ end
249
+
250
+ if order.completed?
251
+ order.updater.update_payment_state
252
+ order.updater.update_shipments
253
+ order.updater.update_shipment_state
254
+ end
255
+
256
+ if self.completed? || order.completed?
257
+ order.persist_totals
258
+ end
259
+ end
260
+
261
+ # Necessary because some payment gateways will refuse payments with
262
+ # duplicate IDs. We *were* using the Order number, but that's set once and
263
+ # is unchanging. What we need is a unique identifier on a per-payment basis,
264
+ # and this is it. Related to #1998.
265
+ # See https://github.com/spree/spree/issues/1998#issuecomment-12869105
266
+ def set_unique_identifier
267
+ begin
268
+ self.identifier = generate_identifier
269
+ end while self.class.exists?(identifier: self.identifier)
270
+ end
271
+
272
+ def generate_identifier
273
+ Array.new(8){ IDENTIFIER_CHARS.sample }.join
274
+ end
275
+
276
+ def create_eligible_credit_event
277
+ # When cancelling an order, a payment with the negative amount
278
+ # of the payment total is created to refund the customer. That
279
+ # payment has a source of itself (Spree::Payment) no matter the
280
+ # type of payment getting refunded, hence the additional check
281
+ # if the source is a store credit.
282
+ if store_credit? && source.is_a?(Spree::StoreCredit)
283
+ source.update_attributes!({
284
+ action: Spree::StoreCredit::ELIGIBLE_ACTION,
285
+ action_amount: amount,
286
+ action_authorization_code: response_code,
287
+ })
288
+ end
289
+ end
290
+
291
+ end
292
+ end