spree_core 2.3.13 → 2.4.0.rc1

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 (232) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.coffee.erb +1 -5
  3. data/app/helpers/spree/base_helper.rb +22 -11
  4. data/app/helpers/spree/products_helper.rb +8 -7
  5. data/app/mailers/spree/base_mailer.rb +1 -0
  6. data/app/mailers/spree/reimbursement_mailer.rb +10 -0
  7. data/app/mailers/spree/test_mailer.rb +2 -3
  8. data/app/models/concerns/spree/adjustment_source.rb +24 -0
  9. data/app/models/concerns/spree/calculated_adjustments.rb +33 -0
  10. data/app/models/concerns/spree/named_type.rb +12 -0
  11. data/app/models/concerns/spree/user_address.rb +30 -0
  12. data/app/models/concerns/spree/user_payment_source.rb +19 -0
  13. data/app/models/spree/address.rb +13 -6
  14. data/app/models/spree/adjustment.rb +5 -5
  15. data/app/models/spree/app_configuration.rb +8 -4
  16. data/app/models/spree/asset.rb +1 -1
  17. data/app/models/spree/base.rb +0 -3
  18. data/app/models/spree/calculator/flat_rate.rb +1 -5
  19. data/app/models/spree/calculator/returns/default_refund_amount.rb +36 -0
  20. data/app/models/spree/classification.rb +1 -1
  21. data/app/models/spree/credit_card.rb +18 -22
  22. data/app/models/spree/customer_return.rb +70 -0
  23. data/app/models/spree/exchange.rb +42 -0
  24. data/app/models/spree/gateway/bogus.rb +3 -3
  25. data/app/models/spree/image.rb +1 -1
  26. data/app/models/spree/inventory_unit.rb +32 -8
  27. data/app/models/spree/item_adjustments.rb +7 -11
  28. data/app/models/spree/legacy_user.rb +2 -2
  29. data/app/models/spree/line_item.rb +25 -12
  30. data/app/models/spree/option_type.rb +1 -1
  31. data/app/models/spree/option_value.rb +1 -8
  32. data/app/models/spree/order.rb +163 -145
  33. data/app/models/spree/order/checkout.rb +35 -23
  34. data/app/models/spree/order/payments.rb +66 -0
  35. data/app/models/spree/order_contents.rb +34 -24
  36. data/app/models/spree/order_populator.rb +6 -4
  37. data/app/models/spree/order_updater.rb +10 -1
  38. data/app/models/spree/payment.rb +19 -16
  39. data/app/models/spree/payment/processing.rb +40 -72
  40. data/app/models/spree/payment_method.rb +1 -1
  41. data/app/models/spree/payment_method/check.rb +0 -2
  42. data/app/models/spree/preference.rb +1 -1
  43. data/app/models/spree/preferences/preferable.rb +20 -0
  44. data/app/models/spree/price.rb +13 -3
  45. data/app/models/spree/product.rb +24 -29
  46. data/app/models/spree/product_property.rb +0 -2
  47. data/app/models/spree/promotion.rb +66 -24
  48. data/app/models/spree/promotion/actions/create_adjustment.rb +2 -2
  49. data/app/models/spree/promotion/actions/create_item_adjustments.rb +15 -11
  50. data/app/models/spree/promotion/actions/create_line_items.rb +2 -12
  51. data/app/models/spree/promotion/rules/first_order.rb +6 -2
  52. data/app/models/spree/promotion/rules/item_total.rb +42 -4
  53. data/app/models/spree/promotion/rules/one_use_per_user.rb +24 -0
  54. data/app/models/spree/promotion/rules/product.rb +13 -11
  55. data/app/models/spree/promotion/rules/taxon.rb +61 -0
  56. data/app/models/spree/promotion/rules/user.rb +1 -1
  57. data/app/models/spree/promotion/rules/user_logged_in.rb +4 -1
  58. data/app/models/spree/promotion_category.rb +6 -0
  59. data/app/models/spree/promotion_handler/cart.rb +14 -18
  60. data/app/models/spree/promotion_handler/coupon.rb +25 -16
  61. data/app/models/spree/promotion_rule.rb +13 -0
  62. data/app/models/spree/property.rb +1 -3
  63. data/app/models/spree/refund.rb +91 -0
  64. data/app/models/spree/refund_reason.rb +13 -0
  65. data/app/models/spree/reimbursement.rb +148 -0
  66. data/app/models/spree/reimbursement/credit.rb +25 -0
  67. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +56 -0
  68. data/app/models/spree/reimbursement/reimbursement_type_validator.rb +12 -0
  69. data/app/models/spree/reimbursement_performer.rb +43 -0
  70. data/app/models/spree/reimbursement_tax_calculator.rb +38 -0
  71. data/app/models/spree/reimbursement_type.rb +16 -0
  72. data/app/models/spree/reimbursement_type/credit.rb +13 -0
  73. data/app/models/spree/reimbursement_type/exchange.rb +9 -0
  74. data/app/models/spree/reimbursement_type/original_payment.rb +13 -0
  75. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +50 -0
  76. data/app/models/spree/return_authorization.rb +52 -68
  77. data/app/models/spree/return_authorization_reason.rb +7 -0
  78. data/app/models/spree/return_item.rb +230 -0
  79. data/app/models/spree/return_item/default_eligibility_validator.rb +27 -0
  80. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +24 -0
  81. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +17 -0
  82. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +16 -0
  83. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +34 -0
  84. data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +10 -0
  85. data/app/models/spree/returns_calculator.rb +8 -0
  86. data/app/models/spree/shipment.rb +209 -154
  87. data/app/models/spree/shipment_handler.rb +43 -0
  88. data/app/models/spree/shipping_calculator.rb +1 -1
  89. data/app/models/spree/shipping_category.rb +2 -2
  90. data/app/models/spree/shipping_method.rb +1 -1
  91. data/app/models/spree/shipping_method_category.rb +1 -1
  92. data/app/models/spree/shipping_rate.rb +4 -0
  93. data/app/models/spree/stock/adjuster.rb +10 -11
  94. data/app/models/spree/stock/availability_validator.rb +6 -10
  95. data/app/models/spree/stock/content_item.rb +48 -0
  96. data/app/models/spree/stock/coordinator.rb +14 -7
  97. data/app/models/spree/stock/estimator.rb +1 -1
  98. data/app/models/spree/stock/inventory_unit_builder.rb +21 -0
  99. data/app/models/spree/stock/package.rb +38 -51
  100. data/app/models/spree/stock/packer.rb +13 -11
  101. data/app/models/spree/stock/prioritizer.rb +7 -7
  102. data/app/models/spree/stock/splitter/base.rb +2 -2
  103. data/app/models/spree/stock_item.rb +6 -9
  104. data/app/models/spree/stock_location.rb +17 -25
  105. data/app/models/spree/stock_movement.rb +1 -8
  106. data/app/models/spree/stock_transfer.rb +0 -2
  107. data/app/models/spree/store.rb +1 -1
  108. data/app/models/spree/tax_category.rb +2 -2
  109. data/app/models/spree/tax_rate.rb +16 -22
  110. data/app/models/spree/taxon.rb +1 -1
  111. data/app/models/spree/variant.rb +45 -23
  112. data/app/models/spree/zone.rb +17 -17
  113. data/app/models/spree/zone_member.rb +1 -1
  114. data/app/views/layouts/spree/base_mailer.html.erb +784 -0
  115. data/app/views/spree/order_mailer/cancel_email.html.erb +45 -0
  116. data/app/views/spree/order_mailer/cancel_email.text.erb +2 -2
  117. data/app/views/spree/order_mailer/confirm_email.html.erb +84 -0
  118. data/app/views/spree/order_mailer/confirm_email.text.erb +2 -2
  119. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +22 -0
  120. data/app/views/spree/shared/_base_mailer_footer.html.erb +20 -0
  121. data/app/views/spree/shared/_base_mailer_header.html.erb +31 -0
  122. data/app/views/spree/shipment_mailer/shipped_email.html.erb +34 -0
  123. data/app/views/spree/test_mailer/test_email.html.erb +40 -0
  124. data/app/views/spree/test_mailer/test_email.text.erb +2 -2
  125. data/config/initializers/friendly_id.rb +88 -0
  126. data/config/initializers/premailer_assets.rb +1 -0
  127. data/config/initializers/user_class_extensions.rb +9 -22
  128. data/config/locales/en.yml +180 -12
  129. data/db/default/spree/states.rb +73 -55
  130. data/db/migrate/20130213191427_create_default_stock.rb +1 -0
  131. data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -5
  132. data/db/migrate/20140309033438_create_store_from_preferences.rb +0 -7
  133. data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +8 -0
  134. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +1 -1
  135. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +5 -3
  136. data/db/migrate/20140625214618_create_spree_refunds.rb +12 -0
  137. data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +12 -0
  138. data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +5 -0
  139. data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +10 -0
  140. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +55 -0
  141. data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +7 -0
  142. data/db/migrate/20140710190048_drop_return_authorization_amount.rb +5 -0
  143. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +28 -0
  144. data/db/migrate/20140713140527_create_spree_refund_reasons.rb +14 -0
  145. data/db/migrate/20140713142214_rename_return_authorization_reason.rb +5 -0
  146. data/db/migrate/20140715182625_create_spree_promotion_categories.rb +11 -0
  147. data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +9 -0
  148. data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +6 -0
  149. data/db/migrate/20140717155155_create_default_refund_reason.rb +9 -0
  150. data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +5 -0
  151. data/db/migrate/20140718133010_create_spree_customer_returns.rb +9 -0
  152. data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +6 -0
  153. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +15 -0
  154. data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +5 -0
  155. data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +13 -0
  156. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +15 -0
  157. data/db/migrate/20140725131539_create_spree_reimbursements.rb +21 -0
  158. data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +5 -0
  159. data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +7 -0
  160. data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +5 -0
  161. data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +20 -0
  162. data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +5 -0
  163. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +10 -0
  164. data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +9 -0
  165. data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +10 -0
  166. data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +7 -0
  167. data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +5 -0
  168. data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +5 -0
  169. data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +6 -0
  170. data/db/migrate/20141009204607_add_store_id_to_orders.rb +8 -0
  171. data/lib/generators/spree/install/install_generator.rb +7 -3
  172. data/lib/spree/core.rb +11 -10
  173. data/lib/spree/core/controller_helpers/common.rb +3 -10
  174. data/lib/spree/core/controller_helpers/order.rb +15 -12
  175. data/lib/spree/core/controller_helpers/strong_parameters.rb +9 -9
  176. data/lib/spree/core/engine.rb +8 -1
  177. data/lib/spree/core/importer/order.rb +5 -17
  178. data/lib/spree/core/search/base.rb +1 -1
  179. data/lib/spree/core/validators/email.rb +1 -1
  180. data/lib/spree/core/version.rb +1 -1
  181. data/lib/spree/instrumentation.rb +41 -0
  182. data/lib/spree/migrations.rb +3 -7
  183. data/lib/spree/money.rb +2 -2
  184. data/lib/spree/permitted_attributes.rb +10 -9
  185. data/lib/spree/testing_support/ability_helpers.rb +25 -25
  186. data/lib/spree/testing_support/authorization_helpers.rb +3 -5
  187. data/lib/spree/testing_support/capybara_ext.rb +2 -2
  188. data/lib/spree/testing_support/factories/calculator_factory.rb +0 -8
  189. data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
  190. data/lib/spree/testing_support/factories/customer_return_factory.rb +31 -0
  191. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +1 -0
  192. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -1
  193. data/lib/spree/testing_support/factories/order_factory.rb +11 -6
  194. data/lib/spree/testing_support/factories/promotion_category_factory.rb +6 -0
  195. data/lib/spree/testing_support/factories/promotion_factory.rb +9 -7
  196. data/lib/spree/testing_support/factories/refund_factory.rb +14 -0
  197. data/lib/spree/testing_support/factories/reimbursement_factory.rb +16 -0
  198. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +7 -0
  199. data/lib/spree/testing_support/factories/return_authorization_factory.rb +9 -3
  200. data/lib/spree/testing_support/factories/return_item_factory.rb +10 -0
  201. data/lib/spree/testing_support/factories/shipment_factory.rb +1 -0
  202. data/lib/spree/testing_support/factories/shipping_method_factory.rb +3 -2
  203. data/lib/spree/testing_support/factories/stock_factory.rb +12 -11
  204. data/lib/spree/testing_support/flash.rb +2 -2
  205. data/lib/tasks/email.rake +7 -0
  206. data/lib/tasks/exchanges.rake +70 -0
  207. data/vendor/assets/javascripts/jquery.validate/localization/messages_et.js +23 -0
  208. data/vendor/assets/javascripts/jquery.validate/localization/messages_eu.js +25 -0
  209. data/vendor/assets/javascripts/jquery.validate/localization/messages_hr.js +25 -0
  210. data/vendor/assets/javascripts/jquery.validate/localization/messages_ka.js +25 -0
  211. data/vendor/assets/javascripts/jquery.validate/localization/messages_ko.js +25 -0
  212. data/vendor/assets/javascripts/jquery.validate/localization/messages_my.js +25 -0
  213. data/vendor/assets/javascripts/jquery.validate/localization/messages_pt_BR.js +26 -0
  214. data/vendor/assets/javascripts/jquery.validate/localization/messages_pt_PT.js +26 -0
  215. data/vendor/assets/javascripts/jquery.validate/localization/messages_sl.js +25 -0
  216. data/vendor/assets/javascripts/jquery.validate/localization/messages_sv.js +23 -0
  217. data/vendor/assets/javascripts/jquery.validate/localization/messages_uk.js +25 -0
  218. data/vendor/assets/javascripts/jquery.validate/localization/messages_zh.js +25 -0
  219. data/vendor/assets/javascripts/jquery.validate/localization/messages_zh_TW.js +26 -0
  220. metadata +163 -47
  221. data/app/models/concerns/spree/ransackable_attributes.rb +0 -19
  222. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
  223. data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +0 -13
  224. data/db/migrate/20141105213646_update_classifications_positions.rb +0 -9
  225. data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +0 -5
  226. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -70
  227. data/lib/spree/core/adjustment_source.rb +0 -26
  228. data/lib/spree/core/calculated_adjustments.rb +0 -35
  229. data/lib/spree/core/controller_helpers.rb +0 -20
  230. data/lib/spree/core/user_address.rb +0 -32
  231. data/lib/spree/core/user_payment_source.rb +0 -20
  232. data/lib/spree/localized_number.rb +0 -20
@@ -0,0 +1,45 @@
1
+ <table>
2
+ <tr>
3
+ <td>
4
+ <p class="lede">
5
+ <%= Spree.t('order_mailer.cancel_email.dear_customer') %>
6
+ </p>
7
+ <p>
8
+ <%= Spree.t('order_mailer.cancel_email.instructions') %>
9
+ </p>
10
+ <p>
11
+ <%= Spree.t('order_mailer.cancel_email.order_summary_canceled') %>
12
+ </p>
13
+ <table>
14
+ <% @order.line_items.each do |item| %>
15
+ <tr>
16
+ <td><%= item.variant.sku %></td>
17
+ <td>
18
+ <%= raw(item.variant.product.name) %>
19
+ <%= raw(item.variant.options_text) -%>
20
+ </td>
21
+ <td>(<%=item.quantity%>) @ <%= item.single_money %> = <%= item.display_amount %></td>
22
+ </tr>
23
+ <% end %>
24
+ <tr>
25
+ <td></td>
26
+ <td><%= Spree.t('order_mailer.cancel_email.subtotal') %></td>
27
+ <td><%= @order.display_item_total %></td>
28
+ </tr>
29
+ <% @order.adjustments.eligible.each do |adjustment| %>
30
+ <tr>
31
+ <td></td>
32
+ <td><%= raw(adjustment.label) %></td>
33
+ <td><%= adjustment.display_amount %></td>
34
+ </tr>
35
+ <% end %>
36
+ <tr>
37
+ <td></td>
38
+ <td><%= Spree.t('order_mailer.cancel_email.total') %></td>
39
+ <td><%= @order.display_total %></td>
40
+ </tr>
41
+ </table>
42
+ </td>
43
+ <td class="expander"></td>
44
+ </tr>
45
+ </table>
@@ -9,8 +9,8 @@
9
9
  <%= item.variant.sku %> <%= raw(item.variant.product.name) %> <%= raw(item.variant.options_text) -%> (<%=item.quantity%>) @ <%= item.single_money %> = <%= item.display_amount %>
10
10
  <% end %>
11
11
  ============================================================
12
- <%= Spree.t('order_mailer.cancel_email.subtotal', :subtotal => @order.display_item_total) %>
12
+ <%= Spree.t('order_mailer.cancel_email.subtotal') %> <%= @order.display_item_total %>
13
13
  <% @order.adjustments.eligible.each do |adjustment| %>
14
14
  <%= raw(adjustment.label) %> <%= adjustment.display_amount %>
15
15
  <% end %>
16
- <%= Spree.t('order_mailer.cancel_email.total', :total => @order.display_total) %>
16
+ <%= Spree.t('order_mailer.cancel_email.total') %> <%= @order.display_total %>
@@ -0,0 +1,84 @@
1
+ <table>
2
+ <tr>
3
+ <td>
4
+ <p class="lede">
5
+ <%= Spree.t('order_mailer.confirm_email.dear_customer') %>
6
+ </p>
7
+ <p>
8
+ <%= Spree.t('order_mailer.confirm_email.instructions') %>
9
+ </p>
10
+ <p>
11
+ <%= Spree.t('order_mailer.confirm_email.order_summary') %>
12
+ </p>
13
+ <table>
14
+ <% @order.line_items.each do |item| %>
15
+ <tr>
16
+ <td><%= item.variant.sku %></td>
17
+ <td>
18
+ <%= raw(item.variant.product.name) %>
19
+ <%= raw(item.variant.options_text) -%>
20
+ </td>
21
+ <td>(<%=item.quantity%>) @ <%= item.single_money %> = <%= item.display_amount %></td>
22
+ </tr>
23
+ <% end %>
24
+ <tr>
25
+ <td></td>
26
+ <td>
27
+ <%= Spree.t('order_mailer.confirm_email.subtotal') %>
28
+ </td>
29
+ <td>
30
+ <%= @order.display_item_total %>
31
+ </td>
32
+ </tr>
33
+ <% if @order.line_item_adjustments.exists? %>
34
+ <% if @order.all_adjustments.promotion.eligible.exists? %>
35
+ <% @order.all_adjustments.promotion.eligible.group_by(&:label).each do |label, adjustments| %>
36
+ <tr>
37
+ <td></td>
38
+ <td><%= Spree.t(:promotion) %> <%= label %>:</td>
39
+ <td><%= Spree::Money.new(adjustments.sum(&:amount), currency: @order.currency) %></td>
40
+ </tr>
41
+ <% end %>
42
+ <% end %>
43
+ <% end %>
44
+ <% @order.shipments.group_by { |s| s.selected_shipping_rate.try(:name) }.each do |name, shipments| %>
45
+ <tr>
46
+ <td></td>
47
+ <td><%= Spree.t(:shipping) %> <%= name %>:</td>
48
+ <td><%= Spree::Money.new(shipments.sum(&:discounted_cost), currency: @order.currency) %></td>
49
+ </tr>
50
+ <% end %>
51
+ <% if @order.all_adjustments.eligible.tax.exists? %>
52
+ <% @order.all_adjustments.eligible.tax.group_by(&:label).each do |label, adjustments| %>
53
+ <tr>
54
+ <td></td>
55
+ <td><%= Spree.t(:tax) %> <%= label %>:</td>
56
+ <td><%= Spree::Money.new(adjustments.sum(&:amount), currency: @order.currency) %></td>
57
+ </tr>
58
+ <% end %>
59
+ <% end %>
60
+ <% @order.adjustments.eligible.each do |adjustment| %>
61
+ <% next if (adjustment.source_type == 'Spree::TaxRate') and (adjustment.amount == 0) %>
62
+ <tr>
63
+ <td></td>
64
+ <td><%= adjustment.label %>:</td>
65
+ <td><%= adjustment.display_amount %></td>
66
+ </tr>
67
+ <% end %>
68
+ <tr>
69
+ <td></td>
70
+ <td>
71
+ <%= Spree.t('order_mailer.confirm_email.total') %>
72
+ </td>
73
+ <td>
74
+ <%= @order.display_total %>
75
+ </td>
76
+ </tr>
77
+ </table>
78
+ <p>
79
+ <%= Spree.t('order_mailer.confirm_email.thanks') %>
80
+ </p>
81
+ </td>
82
+ <td class="expander"></td>
83
+ </tr>
84
+ </table>
@@ -9,7 +9,7 @@
9
9
  <%= item.variant.sku %> <%= raw(item.variant.product.name) %> <%= raw(item.variant.options_text) -%> (<%=item.quantity%>) @ <%= item.single_money %> = <%= item.display_amount %>
10
10
  <% end %>
11
11
  ============================================================
12
- <%= Spree.t('order_mailer.confirm_email.subtotal', :subtotal => @order.display_item_total) %>
12
+ <%= Spree.t('order_mailer.confirm_email.subtotal') %> <%= @order.display_item_total %>
13
13
  <% if @order.line_item_adjustments.exists? %>
14
14
  <% if @order.all_adjustments.promotion.eligible.exists? %>
15
15
  <% @order.all_adjustments.promotion.eligible.group_by(&:label).each do |label, adjustments| %>
@@ -33,6 +33,6 @@
33
33
  <%= adjustment.label %> <%= adjustment.display_amount %>
34
34
  <% end %>
35
35
  ============================================================
36
- <%= Spree.t('order_mailer.confirm_email.total', :total => @order.display_total) %>
36
+ <%= Spree.t('order_mailer.confirm_email.total') %> <%= @order.display_total %>
37
37
 
38
38
  <%= Spree.t('order_mailer.confirm_email.thanks') %>
@@ -0,0 +1,22 @@
1
+ <%= Spree.t('reimbursement_mailer.reimbursement_email.dear_customer') %>
2
+
3
+ <%= Spree.t('reimbursement_mailer.reimbursement_email.instructions') %>
4
+
5
+ ============================================================
6
+ <%= Spree.t('reimbursement_mailer.reimbursement_email.refund_summary') %>
7
+ ============================================================
8
+ <%= Spree.t('reimbursement_mailer.reimbursement_email.total_refunded', total: @reimbursement.display_total) %>
9
+
10
+ <% if @reimbursement.return_items.exchange_requested.present? %>
11
+ ============================================================
12
+ <%= Spree.t('reimbursement_mailer.reimbursement_email.exchange_summary') %>
13
+ ============================================================
14
+ <% @reimbursement.return_items.exchange_requested.each do |return_item| %>
15
+ <%= return_item.variant.sku %> <%= raw(return_item.variant.product.name) %> <%= "(#{raw(return_item.variant.options_text)})" if return_item.variant.options_text.present? -%> -> <%= return_item.exchange_variant.sku %> <%= raw(return_item.exchange_variant.product.name) if return_item.exchange_variant.options_text.present? %> <%= "(#{raw(return_item.exchange_variant.options_text)})" -%>
16
+ <% end %>
17
+
18
+
19
+ <% if @reimbursement.return_items.awaiting_return.present? && Spree::Config[:expedited_exchanges] %>
20
+ <%= Spree.t('reimbursement_mailer.reimbursement_email.days_to_send', days: Spree::Config[:expedited_exchanges_days_window]) %>
21
+ <% end %>
22
+ <% end %>
@@ -0,0 +1,20 @@
1
+ <!-- You can override this template to design your own footer.
2
+ <table class="row footer">
3
+ <tr>
4
+ <td class="wrapper last">
5
+
6
+ <table class="twelve columns">
7
+ <tr>
8
+ <td align="center">
9
+ <center>
10
+ <p style="text-align:center;"><a href="#">Terms</a> | <a href="#">Privacy</a> | <a href="#">Unsubscribe</a></p>
11
+ </center>
12
+ </td>
13
+ <td class="expander"></td>
14
+ </tr>
15
+ </table>
16
+
17
+ </td>
18
+ </tr>
19
+ </table>
20
+ -->
@@ -0,0 +1,31 @@
1
+ <!-- You can override this template to design your own header.
2
+ <table class="row header">
3
+ <tr>
4
+ <td class="center" align="center">
5
+ <center>
6
+
7
+ <table class="container">
8
+ <tr>
9
+ <td class="wrapper last">
10
+
11
+ <table class="twelve columns">
12
+ <tr>
13
+ <td class="six sub-columns">
14
+ <%= image_tag(Spree::Config.logo) %>
15
+ </td>
16
+ <td class="six sub-columns last" style="text-align:right; vertical-align:middle;">
17
+ <span class="template-label"><%= Spree::Store.current.name %></span>
18
+ </td>
19
+ <td class="expander"></td>
20
+ </tr>
21
+ </table>
22
+
23
+ </td>
24
+ </tr>
25
+ </table>
26
+
27
+ </center>
28
+ </td>
29
+ </tr>
30
+ </table>
31
+ -->
@@ -0,0 +1,34 @@
1
+ <table>
2
+ <tr>
3
+ <td>
4
+ <p class="lede">
5
+ <%= Spree.t('shipment_mailer.shipped_email.dear_customer') %>
6
+ </p>
7
+ <p>
8
+ <%= Spree.t('shipment_mailer.shipped_email.instructions') %>
9
+ </p>
10
+ <p>
11
+ <%= Spree.t('shipment_mailer.shipped_email.shipment_summary') %>
12
+ </p>
13
+ <table>
14
+ <% @shipment.manifest.each do |item| %>
15
+ <tr>
16
+ <td><%= item.variant.sku %></td>
17
+ <td><%= item.variant.product.name %></td>
18
+ <td><%= item.variant.options_text %></td>
19
+ </tr>
20
+ <% end %>
21
+ </table>
22
+ <p>
23
+ <%= Spree.t('shipment_mailer.shipped_email.track_information', :tracking => @shipment.tracking) if @shipment.tracking %>
24
+ </p>
25
+ <p>
26
+ <%= Spree.t('shipment_mailer.shipped_email.track_link', :url => @shipment.tracking_url) if @shipment.tracking_url %>
27
+ </p>
28
+ <p>
29
+ <%= Spree.t('shipment_mailer.shipped_email.thanks') %>
30
+ </p>
31
+ </td>
32
+ <td class="expander"></td>
33
+ </tr>
34
+ </table>
@@ -0,0 +1,40 @@
1
+ <table>
2
+ <tr>
3
+ <td>
4
+
5
+ <center>
6
+ <h1 class="center">
7
+ <%= Spree.t('test_mailer.test_email.greeting') %>
8
+ </h1>
9
+ </center>
10
+
11
+ </td>
12
+ <td class="expander"></td>
13
+ </tr>
14
+ </table>
15
+
16
+ <table>
17
+ <tr>
18
+ <td>
19
+
20
+ <p class="lede">
21
+ <%= Spree.t('test_mailer.test_email.message') %>
22
+ </p>
23
+
24
+ <p>
25
+ Please remember to configure all of the emails that Spree has provided to your needs.
26
+ Spree comes shipped with <a href="http://zurb.com/ink/" target="_blank"> Ink </a>
27
+ prepackaged, but you can use your own version. Ink is not placed in the asset pipeline.
28
+ </p>
29
+
30
+ <p>
31
+ Also take note that Gmail does not support <code>&lt;style&gt;</code> tags.
32
+ Therefore, you will need a gem that will be able to remove your <code>&lt;style&gt;</code>
33
+ tags and place them inline. Gmail only supports inline styles. We use
34
+ <a href="https://github.com/fphilipe/premailer-rails" target="_blank">Premailer for Rails</a> by default.
35
+ </p>
36
+
37
+ </td>
38
+ <td class="expander"></td>
39
+ </tr>
40
+ </table>
@@ -1,4 +1,4 @@
1
- <%= t('test_mailer.test_email.greeting') %>
1
+ <%= Spree.t('test_mailer.test_email.greeting') %>
2
2
  ================
3
3
 
4
- <%= t('test_mailer.test_email.message') %>
4
+ <%= Spree.t('test_mailer.test_email.message') %>
@@ -0,0 +1,88 @@
1
+ # FriendlyId Global Configuration
2
+ #
3
+ # Use this to set up shared configuration options for your entire application.
4
+ # Any of the configuration options shown here can also be applied to single
5
+ # models by passing arguments to the `friendly_id` class method or defining
6
+ # methods in your model.
7
+ #
8
+ # To learn more, check out the guide:
9
+ #
10
+ # http://norman.github.io/friendly_id/file.Guide.html
11
+
12
+ FriendlyId.defaults do |config|
13
+ # ## Reserved Words
14
+ #
15
+ # Some words could conflict with Rails's routes when used as slugs, or are
16
+ # undesirable to allow as slugs. Edit this list as needed for your app.
17
+ config.use :reserved
18
+
19
+ config.reserved_words = %w(new edit index session login logout users admin
20
+ stylesheets assets javascripts images)
21
+
22
+ # ## Friendly Finders
23
+ #
24
+ # Uncomment this to use friendly finders in all models. By default, if
25
+ # you wish to find a record by its friendly id, you must do:
26
+ #
27
+ # MyModel.friendly.find('foo')
28
+ #
29
+ # If you uncomment this, you can do:
30
+ #
31
+ # MyModel.find('foo')
32
+ #
33
+ # This is significantly more convenient but may not be appropriate for
34
+ # all applications, so you must explicity opt-in to this behavior. You can
35
+ # always also configure it on a per-model basis if you prefer.
36
+ #
37
+ # Something else to consider is that using the :finders addon boosts
38
+ # performance because it will avoid Rails-internal code that makes runtime
39
+ # calls to `Module.extend`.
40
+ #
41
+ # config.use :finders
42
+ #
43
+ # ## Slugs
44
+ #
45
+ # Most applications will use the :slugged module everywhere. If you wish
46
+ # to do so, uncomment the following line.
47
+ #
48
+ # config.use :slugged
49
+ #
50
+ # By default, FriendlyId's :slugged addon expects the slug column to be named
51
+ # 'slug', but you can change it if you wish.
52
+ #
53
+ # config.slug_column = 'slug'
54
+ #
55
+ # When FriendlyId can not generate a unique ID from your base method, it appends
56
+ # a UUID, separated by a single dash. You can configure the character used as the
57
+ # separator. If you're upgrading from FriendlyId 4, you may wish to replace this
58
+ # with two dashes.
59
+ #
60
+ # config.sequence_separator = '-'
61
+ #
62
+ # ## Tips and Tricks
63
+ #
64
+ # ### Controlling when slugs are generated
65
+ #
66
+ # As of FriendlyId 5.0, new slugs are generated only when the slug field is
67
+ # nil, but if you're using a column as your base method can change this
68
+ # behavior by overriding the `should_generate_new_friendly_id` method that
69
+ # FriendlyId adds to your model. The change below makes FriendlyId 5.0 behave
70
+ # more like 4.0.
71
+ #
72
+ # config.use Module.new {
73
+ # def should_generate_new_friendly_id?
74
+ # slug.blank? || <your_column_name_here>_changed?
75
+ # end
76
+ # }
77
+ #
78
+ # FriendlyId uses Rails's `parameterize` method to generate slugs, but for
79
+ # languages that don't use the Roman alphabet, that's not usually suffient. Here
80
+ # we use the Babosa library to transliterate Russian Cyrillic slugs to ASCII. If
81
+ # you use this, don't forget to add "babosa" to your Gemfile.
82
+ #
83
+ # config.use Module.new {
84
+ # def normalize_friendly_id(text)
85
+ # text.to_slug.normalize! :transliterations => [:russian, :latin]
86
+ # end
87
+ # }
88
+ end
@@ -0,0 +1 @@
1
+ Rails.application.config.assets.precompile += %w( ink.css )
@@ -2,38 +2,25 @@ Spree::Core::Engine.config.to_prepare do
2
2
  if Spree.user_class
3
3
  Spree.user_class.class_eval do
4
4
 
5
- include Spree::UserApiAuthentication
6
5
  include Spree::UserReporting
7
-
6
+ include Spree::UserApiAuthentication
8
7
  has_and_belongs_to_many :spree_roles,
9
- join_table: 'spree_roles_users',
10
- foreign_key: "user_id",
11
- class_name: "Spree::Role"
8
+ :join_table => 'spree_roles_users',
9
+ :foreign_key => "user_id",
10
+ :class_name => "Spree::Role"
12
11
 
13
- has_many :spree_orders, foreign_key: "user_id", class_name: "Spree::Order"
12
+ has_many :spree_orders, :foreign_key => "user_id", :class_name => "Spree::Order"
14
13
 
15
- belongs_to :ship_address, class_name: 'Spree::Address'
16
- belongs_to :bill_address, class_name: 'Spree::Address'
17
-
18
- def self.ransackable_associations(auth_object=nil)
19
- %w[bill_address ship_address]
20
- end
21
-
22
- def self.ransackable_attributes(auth_object=nil)
23
- %w[id email]
24
- end
14
+ belongs_to :ship_address, :class_name => 'Spree::Address'
15
+ belongs_to :bill_address, :class_name => 'Spree::Address'
25
16
 
26
17
  # has_spree_role? simply needs to return true or false whether a user has a role or not.
27
18
  def has_spree_role?(role_in_question)
28
- spree_roles.where(name: role_in_question.to_s).any?
19
+ spree_roles.where(:name => role_in_question.to_s).any?
29
20
  end
30
21
 
31
22
  def last_incomplete_spree_order
32
- spree_orders.incomplete.where(user_id: self.id).order('created_at DESC').first
33
- end
34
-
35
- def analytics_id
36
- id
23
+ spree_orders.incomplete.where(:created_by_id => self.id).order('created_at DESC').first
37
24
  end
38
25
  end
39
26
  end