spree_core 2.3.13 → 2.4.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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