goca-spree-core 3.1.14.rails.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (594) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/LICENSE +26 -0
  4. data/Rakefile +15 -0
  5. data/app/assets/images/logo/spree_50.png +0 -0
  6. data/app/assets/images/noimage/large.png +0 -0
  7. data/app/assets/images/noimage/mini.png +0 -0
  8. data/app/assets/images/noimage/product.png +0 -0
  9. data/app/assets/images/noimage/small.png +0 -0
  10. data/app/assets/javascripts/spree.js.coffee.erb +59 -0
  11. data/app/controllers/spree/base_controller.rb +15 -0
  12. data/app/helpers/spree/base_helper.rb +123 -0
  13. data/app/helpers/spree/products_helper.rb +91 -0
  14. data/app/mailers/spree/base_mailer.rb +27 -0
  15. data/app/mailers/spree/order_mailer.rb +17 -0
  16. data/app/mailers/spree/reimbursement_mailer.rb +10 -0
  17. data/app/mailers/spree/shipment_mailer.rb +10 -0
  18. data/app/mailers/spree/test_mailer.rb +8 -0
  19. data/app/models/concerns/spree/adjustment_source.rb +53 -0
  20. data/app/models/concerns/spree/calculated_adjustments.rb +34 -0
  21. data/app/models/concerns/spree/default_price.rb +40 -0
  22. data/app/models/concerns/spree/display_money.rb +32 -0
  23. data/app/models/concerns/spree/named_type.rb +12 -0
  24. data/app/models/concerns/spree/ransackable_attributes.rb +24 -0
  25. data/app/models/concerns/spree/user_address.rb +30 -0
  26. data/app/models/concerns/spree/user_api_authentication.rb +19 -0
  27. data/app/models/concerns/spree/user_methods.rb +57 -0
  28. data/app/models/concerns/spree/user_payment_source.rb +19 -0
  29. data/app/models/concerns/spree/user_reporting.rb +22 -0
  30. data/app/models/concerns/spree/vat_price_calculation.rb +47 -0
  31. data/app/models/friendly_id/slug_decorator.rb +3 -0
  32. data/app/models/spree/ability.rb +80 -0
  33. data/app/models/spree/address.rb +145 -0
  34. data/app/models/spree/adjustable/adjuster/base.rb +25 -0
  35. data/app/models/spree/adjustable/adjuster/promotion.rb +41 -0
  36. data/app/models/spree/adjustable/adjuster/tax.rb +26 -0
  37. data/app/models/spree/adjustable/adjustments_updater.rb +47 -0
  38. data/app/models/spree/adjustable/promotion_accumulator.rb +75 -0
  39. data/app/models/spree/adjustment.rb +104 -0
  40. data/app/models/spree/app_configuration.rb +74 -0
  41. data/app/models/spree/asset.rb +6 -0
  42. data/app/models/spree/base.rb +24 -0
  43. data/app/models/spree/calculator/default_tax.rb +59 -0
  44. data/app/models/spree/calculator/flat_percent_item_total.rb +22 -0
  45. data/app/models/spree/calculator/flat_rate.rb +20 -0
  46. data/app/models/spree/calculator/flexi_rate.rb +33 -0
  47. data/app/models/spree/calculator/free_shipping.rb +22 -0
  48. data/app/models/spree/calculator/percent_on_line_item.rb +15 -0
  49. data/app/models/spree/calculator/percent_per_item.rb +50 -0
  50. data/app/models/spree/calculator/price_sack.rb +29 -0
  51. data/app/models/spree/calculator/returns/default_refund_amount.rb +36 -0
  52. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +22 -0
  53. data/app/models/spree/calculator/shipping/flat_rate.rb +18 -0
  54. data/app/models/spree/calculator/shipping/flexi_rate.rb +35 -0
  55. data/app/models/spree/calculator/shipping/per_item.rb +22 -0
  56. data/app/models/spree/calculator/shipping/price_sack.rb +28 -0
  57. data/app/models/spree/calculator/tiered_flat_rate.rb +37 -0
  58. data/app/models/spree/calculator/tiered_percent.rb +44 -0
  59. data/app/models/spree/calculator.rb +47 -0
  60. data/app/models/spree/classification.rb +15 -0
  61. data/app/models/spree/country.rb +40 -0
  62. data/app/models/spree/credit_card.rb +166 -0
  63. data/app/models/spree/customer_return.rb +67 -0
  64. data/app/models/spree/exchange.rb +46 -0
  65. data/app/models/spree/gateway/bogus.rb +91 -0
  66. data/app/models/spree/gateway/bogus_simple.rb +26 -0
  67. data/app/models/spree/gateway.rb +80 -0
  68. data/app/models/spree/image.rb +43 -0
  69. data/app/models/spree/inventory_unit.rb +105 -0
  70. data/app/models/spree/legacy_user.rb +13 -0
  71. data/app/models/spree/line_item.rb +158 -0
  72. data/app/models/spree/log_entry.rb +17 -0
  73. data/app/models/spree/option_type.rb +32 -0
  74. data/app/models/spree/option_type_prototype.rb +9 -0
  75. data/app/models/spree/option_value.rb +26 -0
  76. data/app/models/spree/option_value_variant.rb +6 -0
  77. data/app/models/spree/order/checkout.rb +336 -0
  78. data/app/models/spree/order/currency_updater.rb +40 -0
  79. data/app/models/spree/order/payments.rb +66 -0
  80. data/app/models/spree/order/store_credit.rb +96 -0
  81. data/app/models/spree/order.rb +685 -0
  82. data/app/models/spree/order_contents.rb +120 -0
  83. data/app/models/spree/order_inventory.rb +103 -0
  84. data/app/models/spree/order_merger.rb +65 -0
  85. data/app/models/spree/order_promotion.rb +6 -0
  86. data/app/models/spree/order_updater.rb +177 -0
  87. data/app/models/spree/payment/gateway_options.rb +90 -0
  88. data/app/models/spree/payment/processing.rb +175 -0
  89. data/app/models/spree/payment.rb +276 -0
  90. data/app/models/spree/payment_capture_event.rb +9 -0
  91. data/app/models/spree/payment_method/check.rb +43 -0
  92. data/app/models/spree/payment_method/store_credit.rb +130 -0
  93. data/app/models/spree/payment_method.rb +71 -0
  94. data/app/models/spree/preference.rb +5 -0
  95. data/app/models/spree/preferences/configuration.rb +71 -0
  96. data/app/models/spree/preferences/preferable.rb +133 -0
  97. data/app/models/spree/preferences/preferable_class_methods.rb +51 -0
  98. data/app/models/spree/preferences/scoped_store.rb +33 -0
  99. data/app/models/spree/preferences/store.rb +98 -0
  100. data/app/models/spree/price.rb +53 -0
  101. data/app/models/spree/product/scopes.rb +271 -0
  102. data/app/models/spree/product.rb +384 -0
  103. data/app/models/spree/product_option_type.rb +12 -0
  104. data/app/models/spree/product_promotion_rule.rb +9 -0
  105. data/app/models/spree/product_property.rb +28 -0
  106. data/app/models/spree/promotion/actions/create_adjustment.rb +21 -0
  107. data/app/models/spree/promotion/actions/create_item_adjustments.rb +24 -0
  108. data/app/models/spree/promotion/actions/create_line_items.rb +62 -0
  109. data/app/models/spree/promotion/actions/free_shipping.rb +18 -0
  110. data/app/models/spree/promotion/rules/first_order.rb +37 -0
  111. data/app/models/spree/promotion/rules/item_total.rb +61 -0
  112. data/app/models/spree/promotion/rules/one_use_per_user.rb +24 -0
  113. data/app/models/spree/promotion/rules/option_value.rb +50 -0
  114. data/app/models/spree/promotion/rules/product.rb +65 -0
  115. data/app/models/spree/promotion/rules/taxon.rb +70 -0
  116. data/app/models/spree/promotion/rules/user.rb +30 -0
  117. data/app/models/spree/promotion/rules/user_logged_in.rb +18 -0
  118. data/app/models/spree/promotion.rb +198 -0
  119. data/app/models/spree/promotion_action.rb +25 -0
  120. data/app/models/spree/promotion_action_line_item.rb +6 -0
  121. data/app/models/spree/promotion_category.rb +6 -0
  122. data/app/models/spree/promotion_handler/cart.rb +51 -0
  123. data/app/models/spree/promotion_handler/coupon.rb +107 -0
  124. data/app/models/spree/promotion_handler/free_shipping.rb +33 -0
  125. data/app/models/spree/promotion_handler/page.rb +24 -0
  126. data/app/models/spree/promotion_rule.rb +43 -0
  127. data/app/models/spree/promotion_rule_taxon.rb +9 -0
  128. data/app/models/spree/promotion_rule_user.rb +9 -0
  129. data/app/models/spree/property.rb +23 -0
  130. data/app/models/spree/property_prototype.rb +9 -0
  131. data/app/models/spree/prototype.rb +14 -0
  132. data/app/models/spree/prototype_taxon.rb +9 -0
  133. data/app/models/spree/refund.rb +89 -0
  134. data/app/models/spree/refund_reason.rb +13 -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.rb +164 -0
  139. data/app/models/spree/reimbursement_performer.rb +43 -0
  140. data/app/models/spree/reimbursement_tax_calculator.rb +44 -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 +67 -0
  145. data/app/models/spree/reimbursement_type/store_credit.rb +28 -0
  146. data/app/models/spree/reimbursement_type.rb +16 -0
  147. data/app/models/spree/return_authorization.rb +98 -0
  148. data/app/models/spree/return_authorization_reason.rb +7 -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 +16 -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/return_item.rb +236 -0
  159. data/app/models/spree/returns_calculator.rb +8 -0
  160. data/app/models/spree/role.rb +8 -0
  161. data/app/models/spree/role_user.rb +6 -0
  162. data/app/models/spree/shipment.rb +419 -0
  163. data/app/models/spree/shipment_handler.rb +43 -0
  164. data/app/models/spree/shipping_calculator.rb +22 -0
  165. data/app/models/spree/shipping_category.rb +11 -0
  166. data/app/models/spree/shipping_method.rb +69 -0
  167. data/app/models/spree/shipping_method_category.rb +6 -0
  168. data/app/models/spree/shipping_method_zone.rb +6 -0
  169. data/app/models/spree/shipping_rate.rb +44 -0
  170. data/app/models/spree/state.rb +41 -0
  171. data/app/models/spree/state_change.rb +10 -0
  172. data/app/models/spree/stock/adjuster.rb +27 -0
  173. data/app/models/spree/stock/availability_validator.rb +30 -0
  174. data/app/models/spree/stock/content_item.rb +54 -0
  175. data/app/models/spree/stock/coordinator.rb +65 -0
  176. data/app/models/spree/stock/differentiator.rb +44 -0
  177. data/app/models/spree/stock/estimator.rb +70 -0
  178. data/app/models/spree/stock/inventory_unit_builder.rb +22 -0
  179. data/app/models/spree/stock/package.rb +104 -0
  180. data/app/models/spree/stock/packer.rb +48 -0
  181. data/app/models/spree/stock/prioritizer.rb +47 -0
  182. data/app/models/spree/stock/quantifier.rb +29 -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 +34 -0
  187. data/app/models/spree/stock_item.rb +90 -0
  188. data/app/models/spree/stock_location.rb +115 -0
  189. data/app/models/spree/stock_movement.rb +35 -0
  190. data/app/models/spree/stock_transfer.rb +50 -0
  191. data/app/models/spree/store.rb +48 -0
  192. data/app/models/spree/store_credit.rb +252 -0
  193. data/app/models/spree/store_credit_category.rb +22 -0
  194. data/app/models/spree/store_credit_event.rb +38 -0
  195. data/app/models/spree/store_credit_type.rb +6 -0
  196. data/app/models/spree/tax_category.rb +18 -0
  197. data/app/models/spree/tax_rate.rb +110 -0
  198. data/app/models/spree/taxon.rb +102 -0
  199. data/app/models/spree/taxonomy.rb +24 -0
  200. data/app/models/spree/tracker.rb +19 -0
  201. data/app/models/spree/validations/db_maximum_length_validator.rb +23 -0
  202. data/app/models/spree/variant.rb +312 -0
  203. data/app/models/spree/zone.rb +190 -0
  204. data/app/models/spree/zone_member.rb +12 -0
  205. data/app/validators/db_maximum_length_validator.rb +11 -0
  206. data/app/views/layouts/spree/base_mailer.html.erb +41 -0
  207. data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +19 -0
  208. data/app/views/spree/order_mailer/_adjustment.html.erb +8 -0
  209. data/app/views/spree/order_mailer/_subtotal.html.erb +8 -0
  210. data/app/views/spree/order_mailer/_total.html.erb +8 -0
  211. data/app/views/spree/order_mailer/cancel_email.html.erb +30 -0
  212. data/app/views/spree/order_mailer/cancel_email.text.erb +16 -0
  213. data/app/views/spree/order_mailer/confirm_email.html.erb +70 -0
  214. data/app/views/spree/order_mailer/confirm_email.text.erb +38 -0
  215. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +22 -0
  216. data/app/views/spree/shared/_base_mailer_footer.html.erb +20 -0
  217. data/app/views/spree/shared/_base_mailer_header.html.erb +29 -0
  218. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +777 -0
  219. data/app/views/spree/shared/_error_messages.html.erb +11 -0
  220. data/app/views/spree/shared/_mailer_line_item.html.erb +12 -0
  221. data/app/views/spree/shipment_mailer/shipped_email.html.erb +41 -0
  222. data/app/views/spree/shipment_mailer/shipped_email.text.erb +16 -0
  223. data/app/views/spree/test_mailer/test_email.html.erb +40 -0
  224. data/app/views/spree/test_mailer/test_email.text.erb +4 -0
  225. data/config/initializers/assets.rb +1 -0
  226. data/config/initializers/friendly_id.rb +88 -0
  227. data/config/initializers/premailer_assets.rb +1 -0
  228. data/config/initializers/premailer_rails.rb +3 -0
  229. data/config/initializers/user_class_extensions.rb +10 -0
  230. data/config/locales/en.yml +1499 -0
  231. data/config/routes.rb +8 -0
  232. data/db/default/spree/countries.rb +29 -0
  233. data/db/default/spree/default_reimbursement_type.rb +1 -0
  234. data/db/default/spree/roles.rb +2 -0
  235. data/db/default/spree/states.rb +28 -0
  236. data/db/default/spree/stores.rb +9 -0
  237. data/db/default/spree/zones.rb +11 -0
  238. data/db/migrate/20120831092320_spree_one_two.rb +481 -0
  239. data/db/migrate/20120831092359_spree_promo_one_two.rb +45 -0
  240. data/db/migrate/20120905145253_add_tax_rate_label.rb +5 -0
  241. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +5 -0
  242. data/db/migrate/20120929093553_remove_unused_preference_columns.rb +8 -0
  243. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +5 -0
  244. data/db/migrate/20121010142909_add_states_required_to_countries.rb +5 -0
  245. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +6 -0
  246. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +11 -0
  247. data/db/migrate/20121031162139_split_prices_from_variants.rb +31 -0
  248. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +9 -0
  249. data/db/migrate/20121107184631_add_currency_to_line_items.rb +5 -0
  250. data/db/migrate/20121107194006_add_currency_to_orders.rb +5 -0
  251. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +5 -0
  252. data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +5 -0
  253. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +5 -0
  254. data/db/migrate/20121126040517_add_last_ip_to_spree_orders.rb +5 -0
  255. data/db/migrate/20121213162028_add_state_to_spree_adjustments.rb +6 -0
  256. data/db/migrate/20130114053446_add_display_on_to_spree_payment_methods.rb +9 -0
  257. data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +6 -0
  258. data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +5 -0
  259. data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +9 -0
  260. data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +5 -0
  261. data/db/migrate/20130211190146_create_spree_stock_items.rb +14 -0
  262. data/db/migrate/20130211191120_create_spree_stock_locations.rb +11 -0
  263. data/db/migrate/20130213191427_create_default_stock.rb +33 -0
  264. data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +5 -0
  265. data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +5 -0
  266. data/db/migrate/20130226191231_add_stock_location_id_to_spree_shipments.rb +5 -0
  267. data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +6 -0
  268. data/db/migrate/20130228164411_remove_on_demand_from_product_and_variant.rb +6 -0
  269. data/db/migrate/20130228210442_create_shipping_method_zone.rb +21 -0
  270. data/db/migrate/20130301162745_remove_shipping_category_id_from_shipping_method.rb +5 -0
  271. data/db/migrate/20130301162924_create_shipping_method_categories.rb +13 -0
  272. data/db/migrate/20130301205200_add_tracking_url_to_spree_shipping_methods.rb +5 -0
  273. data/db/migrate/20130304162240_create_spree_shipping_rates.rb +24 -0
  274. data/db/migrate/20130304192936_remove_category_match_attributes_from_shipping_method.rb +7 -0
  275. data/db/migrate/20130305143310_create_stock_movements.rb +12 -0
  276. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +22 -0
  277. data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +5 -0
  278. data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +5 -0
  279. data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +5 -0
  280. data/db/migrate/20130318151756_add_source_and_destination_to_stock_movements.rb +8 -0
  281. data/db/migrate/20130319062004_change_orders_total_precision.rb +8 -0
  282. data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +7 -0
  283. data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +7 -0
  284. data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +7 -0
  285. data/db/migrate/20130319183250_add_originator_to_stock_movement.rb +7 -0
  286. data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +15 -0
  287. data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +9 -0
  288. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +5 -0
  289. data/db/migrate/20130328130308_update_shipment_state_for_canceled_orders.rb +15 -0
  290. data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +9 -0
  291. data/db/migrate/20130329134939_remove_stock_item_and_variant_lock.rb +14 -0
  292. data/db/migrate/20130413230529_add_name_to_spree_credit_cards.rb +5 -0
  293. data/db/migrate/20130414000512_update_name_fields_on_spree_credit_cards.rb +13 -0
  294. data/db/migrate/20130417120034_add_index_to_source_columns_on_adjustments.rb +5 -0
  295. data/db/migrate/20130417120035_update_adjustment_states.rb +16 -0
  296. data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +15 -0
  297. data/db/migrate/20130418125341_create_spree_stock_transfers.rb +14 -0
  298. data/db/migrate/20130423110707_drop_products_count_on_hand.rb +5 -0
  299. data/db/migrate/20130423223847_set_default_shipping_rate_cost.rb +5 -0
  300. data/db/migrate/20130509115210_add_number_to_stock_transfer.rb +23 -0
  301. data/db/migrate/20130514151929_add_sku_index_to_spree_variants.rb +5 -0
  302. data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +5 -0
  303. data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +5 -0
  304. data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +5 -0
  305. data/db/migrate/20130611185927_add_user_id_index_to_spree_orders.rb +5 -0
  306. data/db/migrate/20130618041418_add_updated_at_to_spree_countries.rb +9 -0
  307. data/db/migrate/20130619012236_add_updated_at_to_spree_states.rb +9 -0
  308. data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +6 -0
  309. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +5 -0
  310. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +7 -0
  311. data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +5 -0
  312. data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +6 -0
  313. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +5 -0
  314. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +6 -0
  315. data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +5 -0
  316. data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +5 -0
  317. data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +5 -0
  318. data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +10 -0
  319. data/db/migrate/20130806022521_drop_spree_mail_methods.rb +12 -0
  320. data/db/migrate/20130806145853_set_default_stock_location_on_shipments.rb +8 -0
  321. data/db/migrate/20130807024301_upgrade_adjustments.rb +40 -0
  322. data/db/migrate/20130807024302_rename_adjustment_fields.rb +14 -0
  323. data/db/migrate/20130809164245_add_admin_name_column_to_spree_shipping_methods.rb +5 -0
  324. data/db/migrate/20130809164330_add_admin_name_column_to_spree_stock_locations.rb +5 -0
  325. data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +5 -0
  326. data/db/migrate/20130813140619_expand_order_number_size.rb +9 -0
  327. data/db/migrate/20130813232134_rename_activators_to_promotions.rb +5 -0
  328. data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +5 -0
  329. data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +5 -0
  330. data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +16 -0
  331. data/db/migrate/20130828234942_add_tax_total_to_line_items_shipments_and_orders.rb +8 -0
  332. data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +15 -0
  333. data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +19 -0
  334. data/db/migrate/20130903183026_add_code_to_spree_promotion_rules.rb +5 -0
  335. data/db/migrate/20130909115621_change_states_required_for_countries.rb +9 -0
  336. data/db/migrate/20130915032339_add_deleted_at_to_spree_stock_items.rb +5 -0
  337. data/db/migrate/20130917024658_remove_promotions_event_name_field.rb +5 -0
  338. data/db/migrate/20130924040529_add_promo_total_to_line_items_and_shipments_and_orders.rb +7 -0
  339. data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +16 -0
  340. data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +5 -0
  341. data/db/migrate/20131107132123_add_tax_category_to_variants.rb +6 -0
  342. data/db/migrate/20131113035136_add_channel_to_spree_orders.rb +5 -0
  343. data/db/migrate/20131118043959_add_included_to_adjustments.rb +5 -0
  344. data/db/migrate/20131118050234_rename_tax_total_fields.rb +11 -0
  345. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +21 -0
  346. data/db/migrate/20131120234456_add_updated_at_to_variants.rb +5 -0
  347. data/db/migrate/20131127001002_add_position_to_classifications.rb +5 -0
  348. data/db/migrate/20131211112807_create_spree_orders_promotions.rb +8 -0
  349. data/db/migrate/20131211192741_unique_shipping_method_categories.rb +24 -0
  350. data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +5 -0
  351. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +8 -0
  352. data/db/migrate/20140106224208_rename_permalink_to_slug_for_products.rb +5 -0
  353. data/db/migrate/20140120160805_add_index_to_variant_id_and_currency_on_prices.rb +5 -0
  354. data/db/migrate/20140124023232_rename_activator_id_in_rules_and_actions_to_promotion_id.rb +6 -0
  355. data/db/migrate/20140129024326_add_deleted_at_to_spree_prices.rb +5 -0
  356. data/db/migrate/20140203161722_add_approver_id_and_approved_at_to_orders.rb +6 -0
  357. data/db/migrate/20140204115338_add_confirmation_delivered_to_spree_orders.rb +5 -0
  358. data/db/migrate/20140204192230_add_auto_capture_to_payment_methods.rb +5 -0
  359. data/db/migrate/20140205120320_create_spree_payment_capture_events.rb +12 -0
  360. data/db/migrate/20140205144710_add_uncaptured_amount_to_payments.rb +5 -0
  361. data/db/migrate/20140205181631_default_variant_weight_to_zero.rb +11 -0
  362. data/db/migrate/20140207085910_add_tax_category_id_to_shipping_methods.rb +5 -0
  363. data/db/migrate/20140207093021_add_tax_rate_id_to_shipping_rates.rb +5 -0
  364. data/db/migrate/20140211040159_add_pre_tax_amount_to_line_items_and_shipments.rb +6 -0
  365. data/db/migrate/20140213184916_add_more_indexes.rb +13 -0
  366. data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +5 -0
  367. data/db/migrate/20140227112348_add_preference_store_to_everything.rb +8 -0
  368. data/db/migrate/20140307235515_add_user_id_to_spree_credit_cards.rb +13 -0
  369. data/db/migrate/20140309023735_migrate_old_preferences.rb +23 -0
  370. data/db/migrate/20140309024355_create_spree_stores.rb +25 -0
  371. data/db/migrate/20140309033438_create_store_from_preferences.rb +37 -0
  372. data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +6 -0
  373. data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +8 -0
  374. data/db/migrate/20140331100557_add_additional_store_fields.rb +8 -0
  375. data/db/migrate/20140410141842_add_many_missing_indexes.rb +18 -0
  376. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +66 -0
  377. data/db/migrate/20140415041315_add_user_id_created_by_id_index_to_order.rb +5 -0
  378. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +8 -0
  379. data/db/migrate/20140518174634_add_token_to_spree_orders.rb +5 -0
  380. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +29 -0
  381. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +10 -0
  382. data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +6 -0
  383. data/db/migrate/20140609201656_add_deleted_at_to_spree_promotion_actions.rb +6 -0
  384. data/db/migrate/20140616202624_remove_uncaptured_amount_from_spree_payments.rb +5 -0
  385. data/db/migrate/20140625214618_create_spree_refunds.rb +12 -0
  386. data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +12 -0
  387. data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +5 -0
  388. data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +10 -0
  389. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +55 -0
  390. data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +7 -0
  391. data/db/migrate/20140710190048_drop_return_authorization_amount.rb +5 -0
  392. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +28 -0
  393. data/db/migrate/20140713140527_create_spree_refund_reasons.rb +14 -0
  394. data/db/migrate/20140713142214_rename_return_authorization_reason.rb +5 -0
  395. data/db/migrate/20140715182625_create_spree_promotion_categories.rb +11 -0
  396. data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +9 -0
  397. data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +6 -0
  398. data/db/migrate/20140717155155_create_default_refund_reason.rb +9 -0
  399. data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +7 -0
  400. data/db/migrate/20140718133010_create_spree_customer_returns.rb +9 -0
  401. data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +6 -0
  402. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +15 -0
  403. data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +5 -0
  404. data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +13 -0
  405. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +15 -0
  406. data/db/migrate/20140725131539_create_spree_reimbursements.rb +21 -0
  407. data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +5 -0
  408. data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +7 -0
  409. data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +5 -0
  410. data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +20 -0
  411. data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +10 -0
  412. data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +5 -0
  413. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +10 -0
  414. data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +9 -0
  415. data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +10 -0
  416. data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +7 -0
  417. data/db/migrate/20140911173301_add_kind_to_zone.rb +11 -0
  418. data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +5 -0
  419. data/db/migrate/20140927193717_default_pre_tax_amount_should_be_zero.rb +6 -0
  420. data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +5 -0
  421. data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +6 -0
  422. data/db/migrate/20141009204607_add_store_id_to_orders.rb +8 -0
  423. data/db/migrate/20141012083513_create_spree_taxons_prototypes.rb +8 -0
  424. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +5 -0
  425. data/db/migrate/20141023005240_add_counter_cache_from_spree_variants_to_spree_stock_items.rb +13 -0
  426. data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +13 -0
  427. data/db/migrate/20141105213646_update_classifications_positions.rb +9 -0
  428. data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +5 -0
  429. data/db/migrate/20141215232040_remove_token_permissions_table.rb +6 -0
  430. data/db/migrate/20141215235502_remove_extra_products_slug_index.rb +5 -0
  431. data/db/migrate/20141217215630_update_product_slug_index.rb +6 -0
  432. data/db/migrate/20141218025915_rename_identifier_to_number_for_payment.rb +5 -0
  433. data/db/migrate/20150118210639_create_spree_store_credits.rb +24 -0
  434. data/db/migrate/20150118211500_create_spree_store_credit_categories.rb +8 -0
  435. data/db/migrate/20150118212051_create_spree_store_credit_events.rb +17 -0
  436. data/db/migrate/20150118212101_create_spree_store_credit_types.rb +10 -0
  437. data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +6 -0
  438. data/db/migrate/20150122145607_add_resellable_to_return_items.rb +5 -0
  439. data/db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb +5 -0
  440. data/db/migrate/20150128032538_remove_environment_from_tracker.rb +6 -0
  441. data/db/migrate/20150128060325_remove_spree_configurations.rb +16 -0
  442. data/db/migrate/20150216173445_add_index_to_spree_stock_items_variant_id.rb +13 -0
  443. data/db/migrate/20150309161154_ensure_payments_have_numbers.rb +9 -0
  444. data/db/migrate/20150314013438_add_missing_indexes_on_spree_tables.rb +67 -0
  445. data/db/migrate/20150317174308_remove_duplicated_indexes_from_multi_columns.rb +18 -0
  446. data/db/migrate/20150324104002_remove_user_index_from_spree_state_changes.rb +14 -0
  447. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +70 -0
  448. data/db/migrate/20150522071831_add_position_to_spree_payment_methods.rb +5 -0
  449. data/db/migrate/20150522181728_add_deleted_at_to_friendly_id_slugs.rb +6 -0
  450. data/db/migrate/20150609093816_increase_scale_on_pre_tax_amounts.rb +16 -0
  451. data/db/migrate/20150626181949_add_taxable_adjustment_total_to_line_item.rb +19 -0
  452. data/db/migrate/20150627090949_migrate_payment_methods_display.rb +12 -0
  453. data/db/migrate/20150707204155_enable_acts_as_paranoid_on_calculators.rb +6 -0
  454. data/db/migrate/20150714154102_spree_payment_method_store_credits.rb +12 -0
  455. data/db/migrate/20150726141425_rename_has_and_belongs_to_associations_to_model_names.rb +18 -0
  456. data/db/migrate/20150727191614_spree_store_credit_types.rb +11 -0
  457. data/db/migrate/20150819154308_add_discontinued_to_products_and_variants.rb +68 -0
  458. data/db/migrate/20151220072838_remove_shipping_method_id_from_spree_orders.rb +13 -0
  459. data/db/migrate/20160207191757_add_id_column_to_earlier_habtm_tables.rb +16 -0
  460. data/db/migrate/20160219165458_add_indexes.rb +14 -0
  461. data/db/seeds.rb +5 -0
  462. data/lib/generators/spree/custom_user/custom_user_generator.rb +56 -0
  463. data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +36 -0
  464. data/lib/generators/spree/custom_user/templates/initializer.rb.tt +1 -0
  465. data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -0
  466. data/lib/generators/spree/dummy/dummy_generator.rb +140 -0
  467. data/lib/generators/spree/dummy/templates/initializers/custom_user.rb +1 -0
  468. data/lib/generators/spree/dummy/templates/initializers/devise.rb +3 -0
  469. data/lib/generators/spree/dummy/templates/rails/application.rb +10 -0
  470. data/lib/generators/spree/dummy/templates/rails/boot.rb +6 -0
  471. data/lib/generators/spree/dummy/templates/rails/database.yml +72 -0
  472. data/lib/generators/spree/dummy/templates/rails/routes.rb +2 -0
  473. data/lib/generators/spree/dummy/templates/rails/script/rails +6 -0
  474. data/lib/generators/spree/dummy/templates/rails/test.rb +35 -0
  475. data/lib/generators/spree/install/install_generator.rb +233 -0
  476. data/lib/generators/spree/install/templates/config/initializers/spree.rb +18 -0
  477. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +17 -0
  478. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +17 -0
  479. data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/backend/all.css +16 -0
  480. data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +16 -0
  481. data/lib/spree/core/controller_helpers/auth.rb +84 -0
  482. data/lib/spree/core/controller_helpers/common.rb +74 -0
  483. data/lib/spree/core/controller_helpers/order.rb +103 -0
  484. data/lib/spree/core/controller_helpers/respond_with.rb +65 -0
  485. data/lib/spree/core/controller_helpers/search.rb +14 -0
  486. data/lib/spree/core/controller_helpers/store.rb +51 -0
  487. data/lib/spree/core/controller_helpers/strong_parameters.rb +42 -0
  488. data/lib/spree/core/delegate_belongs_to.rb +95 -0
  489. data/lib/spree/core/engine.rb +134 -0
  490. data/lib/spree/core/environment/calculators.rb +12 -0
  491. data/lib/spree/core/environment.rb +15 -0
  492. data/lib/spree/core/environment_extension.rb +25 -0
  493. data/lib/spree/core/importer/order.rb +284 -0
  494. data/lib/spree/core/importer/product.rb +62 -0
  495. data/lib/spree/core/importer.rb +9 -0
  496. data/lib/spree/core/number_generator.rb +52 -0
  497. data/lib/spree/core/product_duplicator.rb +74 -0
  498. data/lib/spree/core/product_filters.rb +194 -0
  499. data/lib/spree/core/routes.rb +46 -0
  500. data/lib/spree/core/search/base.rb +102 -0
  501. data/lib/spree/core/token_generator.rb +22 -0
  502. data/lib/spree/core/validators/email.rb +11 -0
  503. data/lib/spree/core/version.rb +5 -0
  504. data/lib/spree/core.rb +96 -0
  505. data/lib/spree/i18n/base.rb +17 -0
  506. data/lib/spree/i18n/initializer.rb +1 -0
  507. data/lib/spree/i18n.rb +37 -0
  508. data/lib/spree/localized_number.rb +22 -0
  509. data/lib/spree/migrations.rb +77 -0
  510. data/lib/spree/money.rb +61 -0
  511. data/lib/spree/permitted_attributes.rb +115 -0
  512. data/lib/spree/promo/environment.rb +9 -0
  513. data/lib/spree/responder.rb +45 -0
  514. data/lib/spree/testing_support/ability_helpers.rb +105 -0
  515. data/lib/spree/testing_support/authorization_helpers.rb +63 -0
  516. data/lib/spree/testing_support/bar_ability.rb +14 -0
  517. data/lib/spree/testing_support/caching.rb +47 -0
  518. data/lib/spree/testing_support/capybara_ext.rb +179 -0
  519. data/lib/spree/testing_support/common_rake.rb +39 -0
  520. data/lib/spree/testing_support/controller_requests.rb +93 -0
  521. data/lib/spree/testing_support/extension_rake.rb +10 -0
  522. data/lib/spree/testing_support/factories/address_factory.rb +22 -0
  523. data/lib/spree/testing_support/factories/adjustment_factory.rb +26 -0
  524. data/lib/spree/testing_support/factories/calculator_factory.rb +20 -0
  525. data/lib/spree/testing_support/factories/country_factory.rb +9 -0
  526. data/lib/spree/testing_support/factories/credit_card_factory.rb +10 -0
  527. data/lib/spree/testing_support/factories/customer_return_factory.rb +31 -0
  528. data/lib/spree/testing_support/factories/image_factory.rb +5 -0
  529. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +10 -0
  530. data/lib/spree/testing_support/factories/line_item_factory.rb +12 -0
  531. data/lib/spree/testing_support/factories/options_factory.rb +13 -0
  532. data/lib/spree/testing_support/factories/order_factory.rb +91 -0
  533. data/lib/spree/testing_support/factories/payment_factory.rb +28 -0
  534. data/lib/spree/testing_support/factories/payment_method_factory.rb +23 -0
  535. data/lib/spree/testing_support/factories/price_factory.rb +7 -0
  536. data/lib/spree/testing_support/factories/product_factory.rb +36 -0
  537. data/lib/spree/testing_support/factories/product_option_type_factory.rb +6 -0
  538. data/lib/spree/testing_support/factories/product_property_factory.rb +6 -0
  539. data/lib/spree/testing_support/factories/promotion_category_factory.rb +6 -0
  540. data/lib/spree/testing_support/factories/promotion_factory.rb +52 -0
  541. data/lib/spree/testing_support/factories/promotion_rule_factory.rb +5 -0
  542. data/lib/spree/testing_support/factories/property_factory.rb +6 -0
  543. data/lib/spree/testing_support/factories/prototype_factory.rb +11 -0
  544. data/lib/spree/testing_support/factories/refund_factory.rb +22 -0
  545. data/lib/spree/testing_support/factories/reimbursement_factory.rb +16 -0
  546. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +7 -0
  547. data/lib/spree/testing_support/factories/return_authorization_factory.rb +20 -0
  548. data/lib/spree/testing_support/factories/return_item_factory.rb +14 -0
  549. data/lib/spree/testing_support/factories/role_factory.rb +9 -0
  550. data/lib/spree/testing_support/factories/shipment_factory.rb +23 -0
  551. data/lib/spree/testing_support/factories/shipping_category_factory.rb +5 -0
  552. data/lib/spree/testing_support/factories/shipping_method_factory.rb +21 -0
  553. data/lib/spree/testing_support/factories/state_factory.rb +13 -0
  554. data/lib/spree/testing_support/factories/stock_factory.rb +31 -0
  555. data/lib/spree/testing_support/factories/stock_item_factory.rb +9 -0
  556. data/lib/spree/testing_support/factories/stock_location_factory.rb +28 -0
  557. data/lib/spree/testing_support/factories/stock_movement_factory.rb +11 -0
  558. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +9 -0
  559. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -0
  560. data/lib/spree/testing_support/factories/store_credit_factory.rb +17 -0
  561. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +11 -0
  562. data/lib/spree/testing_support/factories/store_factory.rb +8 -0
  563. data/lib/spree/testing_support/factories/tax_category_factory.rb +6 -0
  564. data/lib/spree/testing_support/factories/tax_rate_factory.rb +8 -0
  565. data/lib/spree/testing_support/factories/taxon_factory.rb +7 -0
  566. data/lib/spree/testing_support/factories/taxonomy_factory.rb +5 -0
  567. data/lib/spree/testing_support/factories/tracker_factory.rb +6 -0
  568. data/lib/spree/testing_support/factories/user_factory.rb +22 -0
  569. data/lib/spree/testing_support/factories/variant_factory.rb +39 -0
  570. data/lib/spree/testing_support/factories/zone_factory.rb +25 -0
  571. data/lib/spree/testing_support/factories/zone_member_factory.rb +6 -0
  572. data/lib/spree/testing_support/factories.rb +19 -0
  573. data/lib/spree/testing_support/flash.rb +27 -0
  574. data/lib/spree/testing_support/i18n.rb +97 -0
  575. data/lib/spree/testing_support/microdata.rb +189 -0
  576. data/lib/spree/testing_support/order_walkthrough.rb +72 -0
  577. data/lib/spree/testing_support/preferences.rb +31 -0
  578. data/lib/spree/testing_support/url_helpers.rb +9 -0
  579. data/lib/spree_core.rb +1 -0
  580. data/lib/tasks/core.rake +169 -0
  581. data/lib/tasks/email.rake +10 -0
  582. data/lib/tasks/exchanges.rake +70 -0
  583. data/script/rails +9 -0
  584. data/spec/fixtures/microdata.html +22 -0
  585. data/spec/fixtures/microdata_itemref.html +15 -0
  586. data/spec/fixtures/microdata_no_itemscope.html +20 -0
  587. data/spec/fixtures/thinking-cat.jpg +0 -0
  588. data/spree_core.gemspec +47 -0
  589. data/vendor/assets/javascripts/jquery-migrate-1.0.0.js +498 -0
  590. data/vendor/assets/javascripts/jquery.payment.js +652 -0
  591. data/vendor/assets/javascripts/jsuri.js +2 -0
  592. data/vendor/assets/stylesheets/normalize.css +375 -0
  593. data/vendor/assets/stylesheets/skeleton.css +242 -0
  594. metadata +971 -0
@@ -0,0 +1,51 @@
1
+ module Spree
2
+ module Core
3
+ module ControllerHelpers
4
+ module Store
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ helper_method :current_currency
9
+ helper_method :current_store
10
+ helper_method :current_price_options
11
+ end
12
+
13
+ def current_currency
14
+ Spree::Config[:currency]
15
+ end
16
+
17
+ def current_store
18
+ @current_store ||= Spree::Store.current(request.env['SERVER_NAME'])
19
+ end
20
+
21
+ # Return a Hash of things that influence the prices displayed in your shop.
22
+ #
23
+ # By default, the only thing that influences prices that is the current order's +tax_zone+
24
+ # (to facilitate differing prices depending on VAT rate for digital products in Europe, see
25
+ # https://github.com/spree/spree/pull/6295 and https://github.com/spree/spree/pull/6662).
26
+ #
27
+ # If your prices depend on something else, overwrite this method and add
28
+ # more key/value pairs to the Hash it returns.
29
+ #
30
+ # Be careful though to also patch the following parts of Spree accordingly:
31
+ #
32
+ # * `Spree::VatPriceCalculation#gross_amount`
33
+ # * `Spree::LineItem#update_price`
34
+ # * `Spree::Stock::Estimator#taxation_options_for`
35
+ # * Subclass the `DefaultTax` calculator
36
+ #
37
+ def current_price_options
38
+ {
39
+ tax_zone: current_tax_zone
40
+ }
41
+ end
42
+
43
+ private
44
+
45
+ def current_tax_zone
46
+ current_order.try(:tax_zone) || Spree::Zone.default_tax
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,42 @@
1
+ module Spree
2
+ module Core
3
+ module ControllerHelpers
4
+ module StrongParameters
5
+ def permitted_attributes
6
+ Spree::PermittedAttributes
7
+ end
8
+
9
+ delegate *Spree::PermittedAttributes::ATTRIBUTES,
10
+ to: :permitted_attributes,
11
+ prefix: :permitted
12
+
13
+ def permitted_payment_attributes
14
+ permitted_attributes.payment_attributes + [
15
+ source_attributes: permitted_source_attributes
16
+ ]
17
+ end
18
+
19
+ def permitted_checkout_attributes
20
+ permitted_attributes.checkout_attributes + [
21
+ bill_address_attributes: permitted_address_attributes,
22
+ ship_address_attributes: permitted_address_attributes,
23
+ payments_attributes: permitted_payment_attributes,
24
+ shipments_attributes: permitted_shipment_attributes
25
+ ]
26
+ end
27
+
28
+ def permitted_order_attributes
29
+ permitted_checkout_attributes + [
30
+ line_items_attributes: permitted_line_item_attributes
31
+ ]
32
+ end
33
+
34
+ def permitted_product_attributes
35
+ permitted_attributes.product_attributes + [
36
+ product_properties_attributes: permitted_product_properties_attributes
37
+ ]
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,95 @@
1
+ ##
2
+ # Creates methods on object which delegate to an association proxy.
3
+ # see delegate_belongs_to for two uses
4
+ #
5
+ # Todo - integrate with ActiveRecord::Dirty to make sure changes to delegate object are noticed
6
+ # Should do
7
+ # class User < Spree::Base; delegate_belongs_to :contact, :firstname; end
8
+ # class Contact < Spree::Base; end
9
+ # u = User.first
10
+ # u.changed? # => false
11
+ # u.firstname = 'Bobby'
12
+ # u.changed? # => true
13
+ #
14
+ # Right now the second call to changed? would return false
15
+ #
16
+ # Todo - add has_one support. fairly straightforward addition
17
+ ##
18
+ module DelegateBelongsTo
19
+ extend ActiveSupport::Concern
20
+
21
+ module ClassMethods
22
+
23
+ @@default_rejected_delegate_columns = ['created_at','created_on','updated_at','updated_on','lock_version','type','id','position','parent_id','lft','rgt']
24
+ mattr_accessor :default_rejected_delegate_columns
25
+
26
+ ##
27
+ # Creates methods for accessing and setting attributes on an association. Uses same
28
+ # default list of attributes as delegates_to_association.
29
+ # @todo Integrate this with ActiveRecord::Dirty, so if you set a property through one of these setters and then call save on this object, it will save the associated object automatically.
30
+ # delegate_belongs_to :contact
31
+ # delegate_belongs_to :contact, [:defaults] ## same as above, and useless
32
+ # delegate_belongs_to :contact, [:defaults, :address, :fullname], :class_name => 'VCard'
33
+ ##
34
+ def delegate_belongs_to(association, *attrs)
35
+ opts = attrs.extract_options!
36
+ initialize_association :belongs_to, association, opts
37
+ attrs = get_association_column_names(association) if attrs.empty?
38
+ attrs.concat get_association_column_names(association) if attrs.delete :defaults
39
+ attrs.each do |attr|
40
+ class_def attr do |*args|
41
+ send(:delegator_for, association, attr, *args)
42
+ end
43
+
44
+ class_def "#{attr}=" do |val|
45
+ send(:delegator_for_setter, association, attr, val)
46
+ end
47
+ end
48
+ end
49
+
50
+ protected
51
+
52
+ def get_association_column_names(association, without_default_rejected_delegate_columns=true)
53
+ begin
54
+ association_klass = reflect_on_association(association).klass
55
+ methods = association_klass.column_names
56
+ methods.reject!{|x|default_rejected_delegate_columns.include?(x.to_s)} if without_default_rejected_delegate_columns
57
+ return methods
58
+ rescue
59
+ return []
60
+ end
61
+ end
62
+
63
+ ##
64
+ # initialize_association :belongs_to, :contact
65
+ def initialize_association(type, association, opts={})
66
+ raise 'Illegal or unimplemented association type.' unless [:belongs_to].include?(type.to_s.to_sym)
67
+ send type, association, opts if reflect_on_association(association).nil?
68
+ end
69
+
70
+ private
71
+ def class_def(name, method=nil, &blk)
72
+ class_eval { method.nil? ? define_method(name, &blk) : define_method(name, method) }
73
+ end
74
+ end
75
+
76
+ def delegator_for(association, attr, *args)
77
+ return if self.class.column_names.include?(attr.to_s)
78
+ send "build_#{association}" if send(association).nil?
79
+ if args.empty?
80
+ send(association).send(attr)
81
+ else
82
+ send(association).send(attr, *args)
83
+ end
84
+ end
85
+
86
+ def delegator_for_setter(association, attr, val)
87
+ return if self.class.column_names.include?(attr.to_s)
88
+ send "build_#{association}" if send(association).nil?
89
+ send(association).send("#{attr}=", val)
90
+ end
91
+ protected :delegator_for
92
+ protected :delegator_for_setter
93
+ end
94
+
95
+ ActiveRecord::Base.send :include, DelegateBelongsTo
@@ -0,0 +1,134 @@
1
+ module Spree
2
+ module Core
3
+ class Engine < ::Rails::Engine
4
+ isolate_namespace Spree
5
+ engine_name 'spree'
6
+
7
+ rake_tasks do
8
+ load File.join(root, 'lib', 'tasks', 'exchanges.rake')
9
+ end
10
+
11
+ initializer 'spree.environment', before: :load_config_initializers do |app|
12
+ app.config.spree = Spree::Core::Environment.new
13
+ Spree::Config = app.config.spree.preferences # legacy access
14
+ end
15
+
16
+ initializer 'spree.register.calculators' do |app|
17
+ app.config.spree.calculators.shipping_methods = [
18
+ Spree::Calculator::Shipping::FlatPercentItemTotal,
19
+ Spree::Calculator::Shipping::FlatRate,
20
+ Spree::Calculator::Shipping::FlexiRate,
21
+ Spree::Calculator::Shipping::PerItem,
22
+ Spree::Calculator::Shipping::PriceSack
23
+ ]
24
+
25
+ app.config.spree.calculators.tax_rates = [
26
+ Spree::Calculator::DefaultTax
27
+ ]
28
+ end
29
+
30
+ initializer 'spree.register.stock_splitters' do |app|
31
+ app.config.spree.stock_splitters = [
32
+ Spree::Stock::Splitter::ShippingCategory,
33
+ Spree::Stock::Splitter::Backordered
34
+ ]
35
+ end
36
+
37
+ initializer 'spree.register.payment_methods', after: 'acts_as_list.insert_into_active_record' do |app|
38
+ app.config.spree.payment_methods = [
39
+ Spree::Gateway::Bogus,
40
+ Spree::Gateway::BogusSimple,
41
+ Spree::PaymentMethod::Check,
42
+ Spree::PaymentMethod::StoreCredit
43
+ ]
44
+ end
45
+
46
+ initializer 'spree.register.adjustable_adjusters' do |app|
47
+ app.config.spree.adjusters = [
48
+ Spree::Adjustable::Adjuster::Promotion,
49
+ Spree::Adjustable::Adjuster::Tax
50
+ ]
51
+ end
52
+
53
+ # We need to define promotions rules here so extensions and existing apps
54
+ # can add their custom classes on their initializer files
55
+ initializer 'spree.promo.environment' do |app|
56
+ app.config.spree.add_class('promotions')
57
+ app.config.spree.promotions = Spree::Promo::Environment.new
58
+ app.config.spree.promotions.rules = []
59
+ end
60
+
61
+ initializer 'spree.promo.register.promotion.calculators' do |app|
62
+ app.config.spree.calculators.add_class('promotion_actions_create_adjustments')
63
+ app.config.spree.calculators.promotion_actions_create_adjustments = [
64
+ Spree::Calculator::FlatPercentItemTotal,
65
+ Spree::Calculator::FlatRate,
66
+ Spree::Calculator::FlexiRate,
67
+ Spree::Calculator::TieredPercent,
68
+ Spree::Calculator::TieredFlatRate
69
+ ]
70
+
71
+ app.config.spree.calculators.add_class('promotion_actions_create_item_adjustments')
72
+ app.config.spree.calculators.promotion_actions_create_item_adjustments = [
73
+ Spree::Calculator::PercentOnLineItem,
74
+ Spree::Calculator::FlatRate,
75
+ Spree::Calculator::FlexiRate
76
+ ]
77
+ end
78
+
79
+ # Promotion rules need to be evaluated on after initialize otherwise
80
+ # Spree.user_class would be nil and users might experience errors related
81
+ # to malformed model associations (Spree.user_class is only defined on
82
+ # the app initializer)
83
+ config.after_initialize do
84
+ Rails.application.config.spree.promotions.rules.concat [
85
+ Spree::Promotion::Rules::ItemTotal,
86
+ Spree::Promotion::Rules::Product,
87
+ Spree::Promotion::Rules::User,
88
+ Spree::Promotion::Rules::FirstOrder,
89
+ Spree::Promotion::Rules::UserLoggedIn,
90
+ Spree::Promotion::Rules::OneUsePerUser,
91
+ Spree::Promotion::Rules::Taxon,
92
+ Spree::Promotion::Rules::OptionValue
93
+ ]
94
+ end
95
+
96
+ initializer 'spree.promo.register.promotions.actions' do |app|
97
+ app.config.spree.promotions.actions = [
98
+ Promotion::Actions::CreateAdjustment,
99
+ Promotion::Actions::CreateItemAdjustments,
100
+ Promotion::Actions::CreateLineItems,
101
+ Promotion::Actions::FreeShipping]
102
+ end
103
+
104
+ # filter sensitive information during logging
105
+ initializer 'spree.params.filter' do |app|
106
+ app.config.filter_parameters += [
107
+ :password,
108
+ :password_confirmation,
109
+ :number,
110
+ :verification_value]
111
+ end
112
+
113
+ initializer 'spree.core.checking_migrations' do
114
+ Migrations.new(config, engine_name).check
115
+ end
116
+
117
+ config.to_prepare do
118
+ # Ensure spree locale paths are present before decorators
119
+ I18n.load_path.unshift(*(Dir.glob(
120
+ File.join(
121
+ File.dirname(__FILE__), '../../../config/locales', '*.{rb,yml}'
122
+ )
123
+ ) - I18n.load_path))
124
+
125
+ # Load application's model / class decorators
126
+ Dir.glob(File.join(File.dirname(__FILE__), '../../../app/**/*_decorator*.rb')) do |c|
127
+ Rails.configuration.cache_classes ? require(c) : load(c)
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
133
+
134
+ require 'spree/core/routes'
@@ -0,0 +1,12 @@
1
+ module Spree
2
+ module Core
3
+ class Environment
4
+ class Calculators
5
+ include EnvironmentExtension
6
+
7
+ attr_accessor :shipping_methods, :tax_rates
8
+ end
9
+ end
10
+ end
11
+ end
12
+
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ module Core
3
+ class Environment
4
+ include EnvironmentExtension
5
+
6
+ attr_accessor :calculators, :payment_methods, :preferences,
7
+ :adjusters, :stock_splitters
8
+
9
+ def initialize
10
+ @calculators = Calculators.new
11
+ @preferences = Spree::AppConfiguration.new
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,25 @@
1
+ module Spree
2
+ module Core
3
+ module EnvironmentExtension
4
+ extend ActiveSupport::Concern
5
+
6
+ def add_class(name)
7
+ self.instance_variable_set "@#{name}", Set.new
8
+
9
+ create_method( "#{name}=".to_sym ) { |val|
10
+ instance_variable_set( "@" + name, val)
11
+ }
12
+
13
+ create_method(name.to_sym) do
14
+ instance_variable_get( "@" + name )
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def create_method(name, &block)
21
+ self.class.send(:define_method, name, &block)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,284 @@
1
+ module Spree
2
+ module Core
3
+ module Importer
4
+ class Order
5
+
6
+ def self.import(user, params)
7
+ begin
8
+ ensure_country_id_from_params params[:ship_address_attributes]
9
+ ensure_state_id_from_params params[:ship_address_attributes]
10
+ ensure_country_id_from_params params[:bill_address_attributes]
11
+ ensure_state_id_from_params params[:bill_address_attributes]
12
+
13
+ create_params = params.slice :currency
14
+ order = Spree::Order.create! create_params
15
+ order.associate_user!(user)
16
+
17
+ shipments_attrs = params.delete(:shipments_attributes)
18
+
19
+ create_line_items_from_params(params.delete(:line_items_attributes),order)
20
+ create_shipments_from_params(shipments_attrs, order)
21
+ create_adjustments_from_params(params.delete(:adjustments_attributes), order)
22
+ create_payments_from_params(params.delete(:payments_attributes), order)
23
+
24
+ if completed_at = params.delete(:completed_at)
25
+ order.completed_at = completed_at
26
+ order.state = 'complete'
27
+ end
28
+
29
+ params.delete(:user_id) unless user.try(:has_spree_role?, "admin") && params.key?(:user_id)
30
+
31
+ order.update_attributes!(params)
32
+
33
+ order.create_proposed_shipments unless shipments_attrs.present?
34
+
35
+ # Really ensure that the order totals & states are correct
36
+ order.updater.update
37
+ if shipments_attrs.present?
38
+ order.shipments.each_with_index do |shipment, index|
39
+ shipment.update_columns(cost: shipments_attrs[index][:cost].to_f) if shipments_attrs[index][:cost].present?
40
+ end
41
+ end
42
+ order.reload
43
+ rescue Exception => e
44
+ order.destroy if order && order.persisted?
45
+ raise e.message
46
+ end
47
+ end
48
+
49
+ def self.create_shipments_from_params(shipments_hash, order)
50
+ return [] unless shipments_hash
51
+
52
+ inventory_units = Spree::Stock::InventoryUnitBuilder.new(order).units
53
+
54
+ shipments_hash.each do |s|
55
+ begin
56
+ shipment = order.shipments.build
57
+ shipment.tracking = s[:tracking]
58
+ shipment.stock_location = Spree::StockLocation.find_by_admin_name(s[:stock_location]) || Spree::StockLocation.find_by_name!(s[:stock_location])
59
+
60
+ shipment_units = s[:inventory_units] || []
61
+ shipment_units.each do |su|
62
+ ensure_variant_id_from_params(su)
63
+
64
+ inventory_unit = inventory_units.detect { |iu| iu.variant_id.to_i == su[:variant_id].to_i }
65
+
66
+ if inventory_unit.present?
67
+ inventory_unit.shipment = shipment
68
+
69
+ if s[:shipped_at].present?
70
+ inventory_unit.pending = false
71
+ inventory_unit.state = 'shipped'
72
+ end
73
+
74
+ inventory_unit.save!
75
+
76
+ # Don't assign shipments to this inventory unit more than once
77
+ inventory_units.delete(inventory_unit)
78
+ end
79
+ end
80
+
81
+ if s[:shipped_at].present?
82
+ shipment.shipped_at = s[:shipped_at]
83
+ shipment.state = 'shipped'
84
+ end
85
+
86
+ shipment.save!
87
+
88
+ shipping_method = Spree::ShippingMethod.find_by_name(s[:shipping_method]) || Spree::ShippingMethod.find_by_admin_name!(s[:shipping_method])
89
+ rate = shipment.shipping_rates.create!(shipping_method: shipping_method, cost: s[:cost])
90
+
91
+ shipment.selected_shipping_rate_id = rate.id
92
+ shipment.update_amounts
93
+
94
+ adjustments = s.delete(:adjustments_attributes)
95
+ create_adjustments_from_params(adjustments, order, shipment)
96
+ rescue Exception => e
97
+ raise "Order import shipments: #{e.message} #{s}"
98
+ end
99
+ end
100
+ end
101
+
102
+ def self.create_line_items_from_params(line_items, order)
103
+ return {} unless line_items
104
+ iterator = case line_items
105
+ when Hash
106
+ ActiveSupport::Deprecation.warn(<<-EOS, caller)
107
+ Passing a hash is now deprecated and will be removed in Spree 4.0.
108
+ It is recommended that you pass it as an array instead.
109
+
110
+ New Syntax:
111
+
112
+ {
113
+ "order": {
114
+ "line_items": [
115
+ { "variant_id": 123, "quantity": 1 },
116
+ { "variant_id": 456, "quantity": 1 }
117
+ ]
118
+ }
119
+ }
120
+
121
+ Old Syntax:
122
+
123
+ {
124
+ "order": {
125
+ "line_items": {
126
+ "1": { "variant_id": 123, "quantity": 1 },
127
+ "2": { "variant_id": 123, "quantity": 1 }
128
+ }
129
+ }
130
+ }
131
+ EOS
132
+ :each_value
133
+ when Array
134
+ :each
135
+ end
136
+
137
+ line_items.send(iterator) do |line_item|
138
+ begin
139
+ adjustments = line_item.delete(:adjustments_attributes)
140
+ extra_params = line_item.except(:variant_id, :quantity, :sku)
141
+ line_item = ensure_variant_id_from_params(line_item)
142
+ variant = Spree::Variant.find(line_item[:variant_id])
143
+ line_item = order.contents.add(variant, line_item[:quantity])
144
+ # Raise any errors with saving to prevent import succeeding with line items
145
+ # failing silently.
146
+ if extra_params.present?
147
+ line_item.update_attributes!(extra_params)
148
+ else
149
+ line_item.save!
150
+ end
151
+ create_adjustments_from_params(adjustments, order, line_item)
152
+ rescue Exception => e
153
+ raise "Order import line items: #{e.message} #{line_item}"
154
+ end
155
+ end
156
+ end
157
+
158
+ def self.create_adjustments_from_params(adjustments, order, adjustable = nil)
159
+ return [] unless adjustments
160
+ adjustments.each do |a|
161
+ begin
162
+ adjustment = (adjustable || order).adjustments.build(
163
+ order: order,
164
+ amount: a[:amount].to_f,
165
+ label: a[:label],
166
+ source_type: source_type_from_adjustment(a)
167
+ )
168
+ adjustment.save!
169
+ adjustment.close!
170
+ rescue Exception => e
171
+ raise "Order import adjustments: #{e.message} #{a}"
172
+ end
173
+ end
174
+ end
175
+
176
+ def self.create_payments_from_params(payments_hash, order)
177
+ return [] unless payments_hash
178
+ payments_hash.each do |p|
179
+ begin
180
+ payment = order.payments.build order: order
181
+ payment.amount = p[:amount].to_f
182
+ # Order API should be using state as that's the normal payment field.
183
+ # spree_wombat serializes payment state as status so imported orders should fall back to status field.
184
+ payment.state = p[:state] || p[:status] || 'completed'
185
+ payment.created_at = p[:created_at] if p[:created_at]
186
+ payment.payment_method = Spree::PaymentMethod.find_by_name!(p[:payment_method])
187
+ payment.source = create_source_payment_from_params(p[:source], payment) if p[:source]
188
+ payment.save!
189
+ rescue Exception => e
190
+ raise "Order import payments: #{e.message} #{p}"
191
+ end
192
+ end
193
+ end
194
+
195
+ def self.create_source_payment_from_params(source_hash, payment)
196
+ begin
197
+ Spree::CreditCard.create(
198
+ month: source_hash[:month],
199
+ year: source_hash[:year],
200
+ cc_type: source_hash[:cc_type],
201
+ last_digits: source_hash[:last_digits],
202
+ name: source_hash[:name],
203
+ payment_method: payment.payment_method,
204
+ gateway_customer_profile_id: source_hash[:gateway_customer_profile_id],
205
+ gateway_payment_profile_id: source_hash[:gateway_payment_profile_id],
206
+ imported: true
207
+ )
208
+ rescue Exception => e
209
+ raise "Order import source payments: #{e.message} #{source_hash}"
210
+ end
211
+ end
212
+
213
+ def self.ensure_variant_id_from_params(hash)
214
+ begin
215
+ sku = hash.delete(:sku)
216
+ unless hash[:variant_id].present?
217
+ hash[:variant_id] = Spree::Variant.active.find_by_sku!(sku).id
218
+ end
219
+ hash
220
+ rescue ActiveRecord::RecordNotFound => e
221
+ raise "Ensure order import variant: Variant w/SKU #{sku} not found."
222
+ rescue Exception => e
223
+ raise "Ensure order import variant: #{e.message} #{hash}"
224
+ end
225
+ end
226
+
227
+ def self.ensure_country_id_from_params(address)
228
+ return if address.nil? or address[:country_id].present? or address[:country].nil?
229
+
230
+ begin
231
+ search = {}
232
+ if name = address[:country]['name']
233
+ search[:name] = name
234
+ elsif iso_name = address[:country]['iso_name']
235
+ search[:iso_name] = iso_name.upcase
236
+ elsif iso = address[:country]['iso']
237
+ search[:iso] = iso.upcase
238
+ elsif iso3 = address[:country]['iso3']
239
+ search[:iso3] = iso3.upcase
240
+ end
241
+
242
+ address.delete(:country)
243
+ address[:country_id] = Spree::Country.where(search).first!.id
244
+
245
+ rescue Exception => e
246
+ raise "Ensure order import address country: #{e.message} #{search}"
247
+ end
248
+ end
249
+
250
+ def self.ensure_state_id_from_params(address)
251
+ return if address.nil? or address[:state_id].present? or address[:state].nil?
252
+
253
+ begin
254
+ search = {}
255
+ if name = address[:state]['name']
256
+ search[:name] = name
257
+ elsif abbr = address[:state]['abbr']
258
+ search[:abbr] = abbr.upcase
259
+ end
260
+
261
+ address.delete(:state)
262
+ search[:country_id] = address[:country_id]
263
+
264
+ if state = Spree::State.where(search).first
265
+ address[:state_id] = state.id
266
+ else
267
+ address[:state_name] = search[:name] || search[:abbr]
268
+ end
269
+ rescue Exception => e
270
+ raise "Ensure order import address state: #{e.message} #{search}"
271
+ end
272
+ end
273
+
274
+ def self.source_type_from_adjustment(adjustment)
275
+ if adjustment[:tax]
276
+ 'Spree::TaxRate'
277
+ elsif adjustment[:promotion]
278
+ 'Spree::PromotionAction'
279
+ end
280
+ end
281
+ end
282
+ end
283
+ end
284
+ end