spree_backend 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 (163) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend/address_states.js +1 -3
  3. data/app/assets/javascripts/spree/backend/adjustments.js.coffee +1 -2
  4. data/app/assets/javascripts/spree/backend/admin.js.erb +11 -1
  5. data/app/assets/javascripts/spree/backend/checkouts/edit.js +1 -20
  6. data/app/assets/javascripts/spree/backend/line_items.js.coffee +2 -5
  7. data/app/assets/javascripts/spree/backend/line_items_on_order_edit.js.erb +50 -0
  8. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js.erb +2 -4
  9. data/app/assets/javascripts/spree/backend/orders/edit_form.js +2 -3
  10. data/app/assets/javascripts/spree/backend/payments/edit.js.coffee +5 -5
  11. data/app/assets/javascripts/spree/backend/product_picker.js +2 -4
  12. data/app/assets/javascripts/spree/backend/returns/expedited_exchanges_warning.coffee +4 -0
  13. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +35 -0
  14. data/app/assets/javascripts/spree/backend/shipments.js.erb +39 -52
  15. data/app/assets/javascripts/spree/backend/stock_movement.js.coffee +1 -2
  16. data/app/assets/javascripts/spree/backend/stock_transfer.js.coffee +1 -2
  17. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js.erb +8 -6
  18. data/app/assets/javascripts/spree/backend/taxonomy.js.coffee +5 -24
  19. data/app/assets/javascripts/spree/backend/taxons.js.coffee +2 -4
  20. data/app/assets/javascripts/spree/backend/user_picker.js +2 -3
  21. data/app/assets/javascripts/spree/backend/variant_autocomplete.js.coffee.erb +2 -2
  22. data/app/assets/stylesheets/spree/backend/components/_navigation.scss +0 -5
  23. data/app/assets/stylesheets/spree/backend/plugins/_select2.scss +5 -2
  24. data/app/assets/stylesheets/spree/backend/sections/_adjustments_table.scss +8 -0
  25. data/app/assets/stylesheets/spree/backend/sections/_products.scss +4 -0
  26. data/app/assets/stylesheets/spree/backend/sections/_return_authorizations.scss +24 -0
  27. data/app/assets/stylesheets/spree/backend/sections/_taxons.scss +1 -7
  28. data/app/assets/stylesheets/spree/backend/shared/_tables.scss +8 -0
  29. data/app/assets/stylesheets/spree/backend/spree_admin.scss +2 -0
  30. data/app/assets/stylesheets/spree/backend.css +1 -1
  31. data/app/controllers/spree/admin/adjustments_controller.rb +1 -7
  32. data/app/controllers/spree/admin/base_controller.rb +8 -2
  33. data/app/controllers/spree/admin/customer_returns_controller.rb +67 -0
  34. data/app/controllers/spree/admin/general_settings_controller.rb +1 -1
  35. data/app/controllers/spree/admin/images_controller.rb +1 -1
  36. data/app/controllers/spree/admin/log_entries_controller.rb +2 -2
  37. data/app/controllers/spree/admin/option_types_controller.rb +1 -1
  38. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -2
  39. data/app/controllers/spree/admin/orders_controller.rb +21 -10
  40. data/app/controllers/spree/admin/payment_methods_controller.rb +3 -3
  41. data/app/controllers/spree/admin/payments_controller.rb +6 -12
  42. data/app/controllers/spree/admin/product_properties_controller.rb +2 -2
  43. data/app/controllers/spree/admin/products_controller.rb +1 -1
  44. data/app/controllers/spree/admin/promotion_actions_controller.rb +2 -2
  45. data/app/controllers/spree/admin/promotion_categories_controller.rb +6 -0
  46. data/app/controllers/spree/admin/promotion_rules_controller.rb +2 -2
  47. data/app/controllers/spree/admin/promotions_controller.rb +2 -1
  48. data/app/controllers/spree/admin/refund_reasons_controller.rb +6 -0
  49. data/app/controllers/spree/admin/refunds_controller.rb +31 -0
  50. data/app/controllers/spree/admin/reimbursement_types_controller.rb +6 -0
  51. data/app/controllers/spree/admin/reimbursements_controller.rb +44 -0
  52. data/app/controllers/spree/admin/resource_controller.rb +2 -2
  53. data/app/controllers/spree/admin/return_authorization_reasons_controller.rb +6 -0
  54. data/app/controllers/spree/admin/return_authorizations_controller.rb +35 -5
  55. data/app/controllers/spree/admin/return_items_controller.rb +9 -0
  56. data/app/controllers/spree/admin/search_controller.rb +1 -1
  57. data/app/controllers/spree/admin/shipping_methods_controller.rb +3 -3
  58. data/app/controllers/spree/admin/states_controller.rb +1 -1
  59. data/app/controllers/spree/admin/stock_items_controller.rb +1 -1
  60. data/app/controllers/spree/admin/stock_locations_controller.rb +1 -1
  61. data/app/controllers/spree/admin/stock_transfers_controller.rb +2 -2
  62. data/app/controllers/spree/admin/tax_rates_controller.rb +1 -1
  63. data/app/controllers/spree/admin/users_controller.rb +4 -4
  64. data/app/controllers/spree/admin/variants_controller.rb +2 -2
  65. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  66. data/app/helpers/spree/admin/customer_returns_helper.rb +9 -0
  67. data/app/helpers/spree/admin/navigation_helper.rb +1 -1
  68. data/app/helpers/spree/admin/reimbursement_type_helper.rb +9 -0
  69. data/app/helpers/spree/admin/reimbursements_helper.rb +14 -0
  70. data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +7 -3
  71. data/app/views/spree/admin/customer_returns/_reimbursements_table.html.erb +36 -0
  72. data/app/views/spree/admin/customer_returns/_return_item_decision.html.erb +50 -0
  73. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +43 -0
  74. data/app/views/spree/admin/customer_returns/edit.html.erb +65 -0
  75. data/app/views/spree/admin/customer_returns/index.html.erb +60 -0
  76. data/app/views/spree/admin/customer_returns/new.html.erb +60 -0
  77. data/app/views/spree/admin/general_settings/edit.html.erb +6 -0
  78. data/app/views/spree/admin/images/_form.html.erb +6 -6
  79. data/app/views/spree/admin/log_entries/_credit_card.html.erb +4 -0
  80. data/app/views/spree/admin/log_entries/index.html.erb +2 -5
  81. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +5 -7
  82. data/app/views/spree/admin/option_types/edit.html.erb +9 -2
  83. data/app/views/spree/admin/orders/_add_line_item.html.erb +18 -0
  84. data/app/views/spree/admin/orders/_form.html.erb +7 -7
  85. data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +40 -0
  86. data/app/views/spree/admin/orders/_shipment.html.erb +1 -1
  87. data/app/views/spree/admin/orders/_shipment_manifest.html.erb +5 -4
  88. data/app/views/spree/admin/orders/cart.html.erb +39 -0
  89. data/app/views/spree/admin/orders/customer_details/_form.html.erb +1 -1
  90. data/app/views/spree/admin/orders/edit.html.erb +2 -2
  91. data/app/views/spree/admin/orders/index.html.erb +8 -14
  92. data/app/views/spree/admin/payment_methods/_form.html.erb +7 -7
  93. data/app/views/spree/admin/payments/_list.html.erb +11 -3
  94. data/app/views/spree/admin/payments/index.html.erb +13 -1
  95. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +4 -6
  96. data/app/views/spree/admin/products/_form.html.erb +20 -6
  97. data/app/views/spree/admin/products/new.html.erb +3 -3
  98. data/app/views/spree/admin/products/stock.html.erb +1 -1
  99. data/app/views/spree/admin/promotion_categories/_form.html.erb +10 -0
  100. data/app/views/spree/admin/promotion_categories/edit.html.erb +17 -0
  101. data/app/views/spree/admin/promotion_categories/index.html.erb +34 -0
  102. data/app/views/spree/admin/promotion_categories/new.html.erb +16 -0
  103. data/app/views/spree/admin/promotion_rules/create.js.erb +2 -0
  104. data/app/views/spree/admin/promotions/_actions.html.erb +1 -1
  105. data/app/views/spree/admin/promotions/_form.html.erb +5 -0
  106. data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +7 -7
  107. data/app/views/spree/admin/promotions/index.html.erb +16 -6
  108. data/app/views/spree/admin/promotions/rules/_item_total.html.erb +4 -2
  109. data/app/views/spree/admin/promotions/rules/_one_use_per_user.html.erb +0 -0
  110. data/app/views/spree/admin/promotions/rules/_taxon.html.erb +9 -0
  111. data/app/views/spree/admin/prototypes/_form.html.erb +2 -2
  112. data/app/views/spree/admin/refund_reasons/edit.html.erb +4 -0
  113. data/app/views/spree/admin/refund_reasons/index.html.erb +5 -0
  114. data/app/views/spree/admin/refund_reasons/new.html.erb +4 -0
  115. data/app/views/spree/admin/refunds/edit.html.erb +31 -0
  116. data/app/views/spree/admin/refunds/new.html.erb +43 -0
  117. data/app/views/spree/admin/reimbursement_types/index.html.erb +33 -0
  118. data/app/views/spree/admin/reimbursements/edit.html.erb +108 -0
  119. data/app/views/spree/admin/reimbursements/index.html.erb +34 -0
  120. data/app/views/spree/admin/reimbursements/show.html.erb +94 -0
  121. data/app/views/spree/admin/return_authorization_reasons/edit.html.erb +4 -0
  122. data/app/views/spree/admin/return_authorization_reasons/index.html.erb +5 -0
  123. data/app/views/spree/admin/return_authorization_reasons/new.html.erb +4 -0
  124. data/app/views/spree/admin/return_authorizations/_form.html.erb +62 -50
  125. data/app/views/spree/admin/return_authorizations/edit.html.erb +6 -8
  126. data/app/views/spree/admin/return_authorizations/index.html.erb +3 -4
  127. data/app/views/spree/admin/return_authorizations/new.html.erb +1 -1
  128. data/app/views/spree/admin/shared/_configuration_menu.html.erb +5 -2
  129. data/app/views/spree/admin/shared/_destroy.js.erb +1 -1
  130. data/app/views/spree/admin/shared/_head.html.erb +1 -2
  131. data/app/views/spree/admin/shared/_order_submenu.html.erb +17 -3
  132. data/app/views/spree/admin/shared/_order_summary.html.erb +7 -0
  133. data/app/views/spree/admin/shared/_product_tabs.html.erb +1 -0
  134. data/app/views/spree/admin/shared/_refunds.html.erb +32 -0
  135. data/app/views/spree/admin/shared/_report_order_criteria.html.erb +12 -12
  136. data/app/views/spree/admin/shared/_tabs.html.erb +2 -2
  137. data/app/views/spree/admin/shared/named_types/_edit.html.erb +17 -0
  138. data/app/views/spree/admin/shared/named_types/_form.html.erb +16 -0
  139. data/app/views/spree/admin/shared/named_types/_index.html.erb +52 -0
  140. data/app/views/spree/admin/shared/named_types/_new.html.erb +16 -0
  141. data/app/views/spree/admin/shipping_categories/_form.html.erb +1 -1
  142. data/app/views/spree/admin/shipping_methods/_form.html.erb +8 -0
  143. data/app/views/spree/admin/stock_locations/_form.html.erb +77 -59
  144. data/app/views/spree/admin/stock_transfers/new.html.erb +2 -2
  145. data/app/views/spree/admin/tax_categories/_form.html.erb +9 -2
  146. data/app/views/spree/admin/tax_categories/index.html.erb +4 -1
  147. data/app/views/spree/admin/taxons/index.html.erb +4 -0
  148. data/app/views/spree/admin/trackers/_form.html.erb +4 -4
  149. data/app/views/spree/admin/users/_form.html.erb +1 -1
  150. data/app/views/spree/admin/users/index.html.erb +1 -1
  151. data/app/views/spree/admin/variants/_autocomplete_line_items_stock.js.erb +49 -0
  152. data/app/views/spree/admin/variants/_autocomplete_stock.js.erb +0 -1
  153. data/app/views/spree/admin/variants/_split.js.erb +1 -1
  154. data/app/views/spree/admin/zones/_form.html.erb +1 -1
  155. data/config/initializers/assets.rb +1 -1
  156. data/config/routes.rb +22 -1
  157. metadata +62 -32
  158. data/app/controllers/spree/admin/inventory_units_controller.rb +0 -6
  159. data/app/controllers/spree/admin/line_items_controller.rb +0 -49
  160. data/app/controllers/spree/admin/overview_controller.rb +0 -11
  161. data/app/views/spree/admin/inventory_units/adjust.html.erb +0 -31
  162. data/app/views/spree/test_mailer/test_email.text.erb +0 -4
  163. data/config/locales/en.yml +0 -6
@@ -6,3 +6,5 @@ $('.user_picker').userAutocomplete();
6
6
 
7
7
  $('#promotion_rule_type').html('<%= escape_javascript options_for_promotion_rule_types(@promotion) %>');
8
8
  $('#promotion_rule_type').select2();
9
+
10
+ set_taxon_select()
@@ -9,7 +9,7 @@
9
9
  <%= select_tag 'action_type', options, :class => 'select2 fullwidth' %>
10
10
  </div>
11
11
  <div class="filter-actions actions">
12
- <%= button Spree.t(:add), 'plus', :class => 'fullwidth' %>
12
+ <%= button Spree.t(:add), 'plus' %>
13
13
  </div>
14
14
  </fieldset>
15
15
  <% end %>
@@ -28,6 +28,11 @@
28
28
  <%= f.label :description %><br />
29
29
  <%= f.text_area :description, :rows => 7, :class => 'fullwidth' %>
30
30
  <% end %>
31
+
32
+ <%= f.field_container :category do %>
33
+ <%= f.label :promotion_category %><br />
34
+ <%= f.collection_select(:promotion_category_id, @promotion_categories, :id, :name, { :include_blank => Spree.t('match_choices.none') }, { :class => 'select2 fullwidth' }) %>
35
+ <% end %>
31
36
  </div>
32
37
  </div>
33
38
 
@@ -10,14 +10,14 @@
10
10
  <% line_items.each_with_index do |line_item, index| %>
11
11
  <div class="add-line-item">
12
12
  <div class="row">
13
- <div class="field alpha eight columns">
14
- <% line_item_prefix = "#{param_prefix}[promotion_action_line_items_attributes][#{index}]" %>
15
- <%= hidden_field_tag "#{line_item_prefix}[variant_id]", line_item.variant_id, :class => "variant_autocomplete fullwidth" %>
13
+ <% line_item_prefix = "#{param_prefix}[promotion_action_line_items_attributes][#{index}]" %>
14
+ <div class="field alpha six columns">
15
+ <%= label_tag "#{line_item_prefix}_variant_id", Spree.t(:variant) %>
16
+ <%= hidden_field_tag "#{line_item_prefix}[variant_id]", line_item.variant_id, class: "variant_autocomplete fullwidth" %>
16
17
  </div>
17
- </div>
18
- <div class="row">
19
- <div class="field omega eight columns">
20
- <%= number_field_tag "#{line_item_prefix}[quantity]", line_item.quantity, :min => 1, :class => 'fullwidth' %>
18
+ <div class="field omega two columns">
19
+ <%= label_tag "#{line_item_prefix}_quantity", Spree.t(:quantity) %>
20
+ <%= number_field_tag "#{line_item_prefix}[quantity]", line_item.quantity, min: 1, class: 'fullwidth' %>
21
21
  </div>
22
22
  </div>
23
23
  </div>
@@ -3,6 +3,9 @@
3
3
  <% end %>
4
4
 
5
5
  <% content_for :page_actions do %>
6
+ <li>
7
+ <%= button_link_to Spree.t(:manage_promotion_categories), spree.admin_promotion_categories_path, :icon => 'bars' %>
8
+ </li>
6
9
  <li>
7
10
  <%= button_link_to Spree.t(:new_promotion), spree.new_admin_promotion_path, :icon => 'plus' %>
8
11
  </li>
@@ -15,27 +18,34 @@
15
18
  <% content_for :table_filter do %>
16
19
  <div data-hook="admin_promotions_index_search">
17
20
  <%= search_form_for [:admin, @search] do |f| %>
18
- <div class="five columns">
21
+ <div class="four columns alpha">
19
22
  <div class="field">
20
- <%= label_tag nil, Spree.t(:name) %>
23
+ <%= label_tag :q_name_cont, Spree.t(:name) %>
21
24
  <%= f.text_field :name_cont, tabindex: 1 %>
22
25
  </div>
23
26
  </div>
24
27
 
25
- <div class="five columns">
28
+ <div class="four columns">
26
29
  <div class="field">
27
- <%= label_tag nil, Spree.t(:code) %>
30
+ <%= label_tag :q_code_cont, Spree.t(:code) %>
28
31
  <%= f.text_field :code_cont, tabindex: 1 %>
29
32
  </div>
30
33
  </div>
31
34
 
32
- <div class="five columns">
35
+ <div class="four columns">
33
36
  <div class="field">
34
- <%= label_tag nil, Spree.t(:path) %>
37
+ <%= label_tag :q_path_cont, Spree.t(:path) %>
35
38
  <%= f.text_field :path_cont, tabindex: 1 %>
36
39
  </div>
37
40
  </div>
38
41
 
42
+ <div class="four columns omega">
43
+ <div class="field">
44
+ <%= label_tag :q_promotion_category_id_eq, 'promotion category' %><br>
45
+ <%= f.collection_select(:promotion_category_id_eq, @promotion_categories, :id, :name, { :include_blank => Spree.t('match_choices.all') }, { :class => 'select2 fullwidth' }) %>
46
+ </div>
47
+ </div>
48
+
39
49
  <div class="clearfix"></div>
40
50
 
41
51
  <div class="actions filter-actions">
@@ -1,6 +1,8 @@
1
1
  <div class="field alpha four columns">
2
- <%= select_tag "#{param_prefix}[preferred_operator]", options_for_select(Spree::Promotion::Rules::ItemTotal::OPERATORS.map{|o| [Spree.t("item_total_rule.operators.#{o}"),o]}, promotion_rule.preferred_operator), {:class => 'select2 select_item_total fullwidth'} %>
2
+ <%= select_tag "#{param_prefix}[preferred_operator_min]", options_for_select(Spree::Promotion::Rules::ItemTotal::OPERATORS_MIN.map{|o| [Spree.t("item_total_rule.operators.#{o}"),o]}, promotion_rule.preferred_operator_min), { class: 'select2 select_item_total fullwidth' } %>
3
+ <%= select_tag "#{param_prefix}[preferred_operator_max]", options_for_select(Spree::Promotion::Rules::ItemTotal::OPERATORS_MAX.map{|o| [Spree.t("item_total_rule.operators.#{o}"),o]}, promotion_rule.preferred_operator_max), { class: 'select2 select_item_total fullwidth' } %>
3
4
  </div>
4
5
  <div class="field omega four columns">
5
- <%= text_field_tag "#{param_prefix}[preferred_amount]", promotion_rule.preferred_amount, :class => 'fullwidth' %>
6
+ <%= text_field_tag "#{param_prefix}[preferred_amount_min]", promotion_rule.preferred_amount_min, class: 'fullwidth' %>
7
+ <%= text_field_tag "#{param_prefix}[preferred_amount_max]", promotion_rule.preferred_amount_max, class: 'fullwidth' %>
6
8
  </div>
@@ -0,0 +1,9 @@
1
+ <div class="field alpha omega eight columns taxons_rule_taxons">
2
+ <%= label_tag "#{param_prefix}_taxon_ids_string", Spree.t('taxon_rule.choose_taxons') %>
3
+ <%= hidden_field_tag "#{param_prefix}[taxon_ids_string]", promotion_rule.taxon_ids.join(","), :class => "taxon_picker fullwidth", id: 'product_taxon_ids' %>
4
+ </div>
5
+ <div class="field alpha omega eight columns">
6
+ <label>
7
+ <%= Spree.t('taxon_rule.label', :select => select_tag("#{param_prefix}[preferred_match_policy]", options_for_select(Spree::Promotion::Rules::Taxon::MATCH_POLICIES.map{|s| [Spree.t("taxon_rule.match_#{s}"),s] }, promotion_rule.preferred_match_policy), {:class => 'select_taxon select2'})).html_safe %>
8
+ </label>
9
+ </div>
@@ -11,7 +11,7 @@
11
11
  <div id='properties' data-hook>
12
12
  <%= f.field_container :property_ids do %>
13
13
  <%= f.label :property_ids, Spree.t(:properties) %><br>
14
- <%= f.select :property_ids, Spree::Property.all.map { |p| ["#{p.presentation} (#{p.name})", p.id] }, {}, { :multiple => true, :class => "select2 fullwidth" } %>
14
+ <%= f.select :property_ids, Spree::Property.all.map { |p| [p.presentation, p.id] }, {}, { :multiple => true, :class => "select2 fullwidth" } %>
15
15
  <% end %>
16
16
  </div>
17
17
  </div>
@@ -19,7 +19,7 @@
19
19
  <div class="six columns omega">
20
20
  <%= f.field_container :option_type_ids do %>
21
21
  <%= f.label :option_type_ids, Spree.t(:option_types) %><br>
22
- <%= f.select :option_type_ids, Spree::OptionType.all.map { |ot| ["#{ot.presentation} (#{ot.name})", ot.id] }, {}, { :multiple => true, :class => "select2 fullwidth" } %>
22
+ <%= f.select :option_type_ids, Spree::OptionType.all.map { |ot| [ot.presentation, ot.id] }, {}, { :multiple => true, :class => "select2 fullwidth" } %>
23
23
  <% end %>
24
24
  </div>
25
25
  </div>
@@ -0,0 +1,4 @@
1
+ <%= render partial: 'spree/admin/shared/named_types/edit', locals: {
2
+ page_title: Spree.t(:editing_refund_reason),
3
+ back_button_text: Spree.t(:back_to_refund_reason_list)
4
+ } %>
@@ -0,0 +1,5 @@
1
+ <%= render partial: 'spree/admin/shared/named_types/index', locals: {
2
+ page_title: Spree.t(:refund_reasons),
3
+ new_button_text: Spree.t(:new_refund_reason),
4
+ resource_name: I18n.t(:other, scope: 'activerecord.models.spree/refund_reason')
5
+ } %>
@@ -0,0 +1,4 @@
1
+ <%= render partial: 'spree/admin/shared/named_types/new', locals: {
2
+ page_title: Spree.t(:new_refund_reason),
3
+ back_button_text: Spree.t(:back_to_refund_reason_list)
4
+ } %>
@@ -0,0 +1,31 @@
1
+ <%= render partial: 'spree/admin/shared/order_tabs', locals: {current: 'Payments'} %>
2
+
3
+ <% content_for :page_title do %>
4
+ <i class="fa fa-arrow-right"></i> <%= link_to "#{Spree.t(:payment)} #{@refund.payment.id}", admin_order_payment_path(@refund.payment.order, @refund.payment) %>
5
+ <i class="fa fa-arrow-right"></i> <%= Spree.t(:editing_refund) %> <%= @refund.id %>
6
+ <% end %>
7
+
8
+ <%= form_for [:admin, @refund.payment.order, @refund.payment, @refund] do |f| %>
9
+ <fieldset class="no-border-top">
10
+ <div data-hook="admin_refund_form_fields" class="row">
11
+ <div class="alpha three columns">
12
+ <div class="field">
13
+ <%= Spree.t(:amount) %><br/>
14
+ <%= @refund.amount %>
15
+ </div>
16
+ </div>
17
+ <div class="alpha three columns">
18
+ <div class="field">
19
+ <%= f.label :refund_reason_id, Spree.t(:reason) %><br/>
20
+ <%= f.collection_select(:refund_reason_id, refund_reasons, :id, :name, {}, {class: 'select2 fullwidth'}) %>
21
+ </div>
22
+ </div>
23
+ </div>
24
+
25
+ <div class="form-buttons filter-actions actions" data-hook="buttons">
26
+ <%= button Spree.t('actions.save'), 'ok' %>
27
+ <span class="or"><%= Spree.t(:or) %></span>
28
+ <%= button_link_to Spree.t('actions.cancel'), admin_order_payments_url(@refund.payment.order), icon: 'remove' %>
29
+ </div>
30
+ </fieldset>
31
+ <% end %>
@@ -0,0 +1,43 @@
1
+ <%= render partial: 'spree/admin/shared/order_tabs', locals: {current: 'Payments'} %>
2
+
3
+ <% content_for :page_title do %>
4
+ <i class="fa fa-arrow-right"></i> <%= link_to "#{Spree.t(:payment)} #{@refund.payment.id}", admin_order_payment_path(@refund.payment.order, @refund.payment) %>
5
+ <i class="fa fa-arrow-right"></i> <%= Spree.t(:new_refund) %>
6
+ <% end %>
7
+
8
+ <%= form_for [:admin, @refund.payment.order, @refund.payment, @refund] do |f| %>
9
+ <fieldset class="no-border-top">
10
+ <div data-hook="admin_refund_form_fields" class="row">
11
+ <div class="alpha three columns">
12
+ <div class="field">
13
+ <%= Spree.t(:payment_amount) %><br/>
14
+ <%= @refund.payment.amount %>
15
+ </div>
16
+ </div>
17
+ <div class="alpha three columns">
18
+ <div class="field">
19
+ <%= Spree.t(:credit_allowed) %><br/>
20
+ <%= @refund.payment.credit_allowed %>
21
+ </div>
22
+ </div>
23
+ <div class="alpha three columns">
24
+ <div class="field">
25
+ <%= f.label :amount, Spree.t(:amount) %><br/>
26
+ <%= f.text_field :amount, class: 'fullwidth' %>
27
+ </div>
28
+ </div>
29
+ <div class="alpha three columns">
30
+ <div class="field">
31
+ <%= f.label :refund_reason_id, Spree.t(:reason) %><br/>
32
+ <%= f.collection_select(:refund_reason_id, refund_reasons, :id, :name, {include_blank: true}, {class: 'select2 fullwidth'}) %>
33
+ </div>
34
+ </div>
35
+ </div>
36
+
37
+ <div class="form-buttons filter-actions actions" data-hook="buttons">
38
+ <%= button Spree.t(:refund), 'ok' %>
39
+ <span class="or"><%= Spree.t(:or) %></span>
40
+ <%= button_link_to Spree.t('actions.cancel'), admin_order_payments_url(@refund.payment.order), icon: 'remove' %>
41
+ </div>
42
+ </fieldset>
43
+ <% end %>
@@ -0,0 +1,33 @@
1
+ <%= render partial: 'spree/admin/shared/configuration_menu' %>
2
+
3
+ <% content_for :page_title do %>
4
+ <%= Spree.t(:reimbursement_types) %>
5
+ <% end %>
6
+
7
+ <% if @reimbursement_types.any? %>
8
+ <table class="index" id='listing_reimbursement_types' data-hook>
9
+ <thead>
10
+ <tr data-hook="reimbursement_types_header">
11
+ <th><%= Spree.t(:name) %></th>
12
+ <th><%= Spree.t(:type) %></th>
13
+ </tr>
14
+ </thead>
15
+ <tbody>
16
+ <% @reimbursement_types.each do |reimbursement_type| %>
17
+ <tr id="<%= spree_dom_id reimbursement_type %>" data-hook="reimbursement_type_row" class="<%= cycle('odd', 'even')%>">
18
+ <td class="align-center">
19
+ <%= reimbursement_type.name.humanize %>
20
+ </td>
21
+ <td>
22
+ <%= reimbursement_type.type %>
23
+ </td>
24
+ </tr>
25
+ <% end %>
26
+ </tbody>
27
+ </table>
28
+ <% else %>
29
+ <div class="alpha twelve columns no-objects-found">
30
+ <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/reimbursement_type')) %>,
31
+ <%= link_to Spree.t(:add_one), new_object_url %>!
32
+ </div>
33
+ <% end %>
@@ -0,0 +1,108 @@
1
+ <%= render :partial => 'spree/admin/shared/order_tabs', :locals => { :current => 'Customer Returns' } %>
2
+
3
+ <% content_for :page_title do %>
4
+ <i class="fa fa-arrow-right"></i> <%= Spree.t(:editing_reimbursement) %> #<%= @reimbursement.number %>
5
+ <% end %>
6
+
7
+ <% content_for :page_actions do %>
8
+ <li><%= button_link_to Spree.t(:back_to_customer_return), url_for([:edit, :admin, @order, @reimbursement.customer_return]), :icon => 'arrow-left' %></li>
9
+ <% end %>
10
+
11
+ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @reimbursement } %>
12
+
13
+ <%= form_for [:admin, @order, @reimbursement] do |f| %>
14
+ <fieldset class='no-border-bottom'>
15
+ <legend align='center'><%= Spree.t(:items_to_be_reimbursed) %></legend>
16
+ <table class="index reimbursement-return-items-table">
17
+ <thead>
18
+ <tr>
19
+ <th><%= Spree.t(:product) %></th>
20
+ <th><%= Spree.t(:preferred_reimbursement_type) %></th>
21
+ <th><%= Spree.t(:reimbursement_type_override) %></th>
22
+ <th><%= Spree.t(:pre_tax_refund_amount) %></th>
23
+ <th><%= Spree.t(:total) %></th>
24
+ <th><%= Spree.t(:exchange_for) %></th>
25
+ </tr>
26
+ </thead>
27
+ <tbody>
28
+ <%= f.fields_for :return_items, @reimbursement.return_items.sort_by(&:id) do |item_fields| %>
29
+ <% return_item = item_fields.object %>
30
+
31
+ <tr>
32
+ <td>
33
+ <div class="variant-name"><%= return_item.inventory_unit.variant.name %></div>
34
+ <div class="variant-options"><%= return_item.inventory_unit.variant.options_text %></div>
35
+ </td>
36
+ <td class="align-center">
37
+ <%= reimbursement_type_name(return_item.preferred_reimbursement_type) %>
38
+ </td>
39
+ <td class='align-center'>
40
+ <%= item_fields.select(:override_reimbursement_type_id,
41
+ reimbursement_types.collect { |r| [r.name.humanize, r.id] },
42
+ {include_blank: true},
43
+ {class: 'select2 fullwidth'}
44
+ ) %>
45
+ </td>
46
+ <td class="align-center">
47
+ <%= item_fields.text_field :pre_tax_amount, { class: 'refund-amount-input' } %>
48
+ </td>
49
+ <td class="align-center">
50
+ <%= return_item.display_total %>
51
+ </td>
52
+ <td class="align-center">
53
+ <% if return_item.exchange_processed? %>
54
+ <%= return_item.exchange_variant.options_text %>
55
+ <% else %>
56
+ <%= item_fields.collection_select :exchange_variant_id, return_item.eligible_exchange_variants, :id, :options_text, { include_blank: true }, { class: "select2 fullwidth return-item-exchange-selection" } %>
57
+ <% end %>
58
+ </td>
59
+ </tr>
60
+
61
+ <% end %>
62
+ </tbody>
63
+ </table>
64
+ </fieldset>
65
+
66
+ <div class="form-buttons filter-actions actions" data-hook="buttons">
67
+ <%= f.button do %>
68
+ <%= Spree.t(:update) %>
69
+ <% end %>
70
+ </div>
71
+ <br/>
72
+ <% end %>
73
+
74
+ <fieldset>
75
+ <legend align='center'><%= Spree.t(:calculated_reimbursements) %></legend>
76
+ <table class="index">
77
+ <thead data-hook="customer_return_header">
78
+ <tr>
79
+ <th><%= Spree.t(:reimbursement_type) %></th>
80
+ <th><%= Spree.t(:description) %></th>
81
+ <th><%= Spree.t(:amount) %></th>
82
+ </tr>
83
+ </thead>
84
+ <tbody>
85
+ <% @reimbursement_objects.each do |reimbursement_object| %>
86
+ <tr id="<%= spree_dom_id(reimbursement_object) %>" data-hook="reimbursement_reimbursement_object_row" class="<%= cycle('odd', 'even')%>">
87
+ <td><%= reimbursement_object.class.name.demodulize %></td>
88
+ <td><%= reimbursement_object.description %></td>
89
+ <td><%= reimbursement_object.display_amount %></td>
90
+ </tr>
91
+ <% end %>
92
+ </tbody>
93
+ </table>
94
+ <% if @order.has_non_reimbursement_related_refunds? %>
95
+ <span class="red">
96
+ <%= "#{Spree.t('note')}: #{Spree.t('this_order_has_already_received_a_refund')}. #{Spree.t('make_sure_the_above_reimbursement_amount_is_correct')}." %>
97
+ </span>
98
+ <% end %>
99
+ <div class="form-buttons filter-actions actions" data-hook="reimburse-buttons">
100
+ <% if !@reimbursement.reimbursed? %>
101
+ <%= button_to [:perform, :admin, @order, @reimbursement], {class: 'button fa fa-reply', method: 'post'} do %>
102
+ <%= Spree.t(:reimburse) %>
103
+ <% end %>
104
+ <span class="or"><%= Spree.t(:or) %></span>
105
+ <%= button_link_to Spree.t('actions.cancel'), url_for([:admin, @order, @reimbursement.customer_return]), :icon => 'remove' %>
106
+ <% end %>
107
+ </div>
108
+ </fieldset>
@@ -0,0 +1,34 @@
1
+ <%= render :partial => 'spree/admin/shared/order_tabs', :locals => { :current => 'Reimbursements' } %>
2
+
3
+ <% content_for :page_title do %>
4
+ <i class="fa fa-arrow-right"></i> <%= Spree.t(:edit_reimbursement) %>
5
+ <% end %>
6
+
7
+ <% content_for :page_actions do %>
8
+ <li><%= button_link_to Spree.t(:back_to_customer_return_list), spree.admin_order_customer_returns_url(@order), :icon => 'arrow-left' %></li>
9
+ <% end %>
10
+
11
+ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @customer_return } %>
12
+
13
+ <table class="index">
14
+ <thead data-hook="customer_return_header">
15
+ <tr>
16
+ <th><%= Spree.t(:id) %></th>
17
+ <th><%= Spree.t(:total) %></th>
18
+ <th><%= Spree.t(:status) %></th>
19
+ <th><%= "#{Spree.t('date')}/#{Spree.t('time')}" %></th>
20
+ <th class="actions"></th>
21
+ </tr>
22
+ </thead>
23
+ <tbody>
24
+ <% @reimbursements.each do |reimbursement| %>
25
+ <tr id="<%= spree_dom_id(reimbursement) %>" data-hook="reimbursement_row" class="<%= cycle('odd', 'even')%>">
26
+ <td><%= reimbursement.id %></td>
27
+ <td><%= reimbursement.total %></td>
28
+ <td><%= reimbursement.reimbursement_status %></td>
29
+ <td><%= pretty_time(reimbursement.created_at) %></td>
30
+ <td></td>
31
+ </tr>
32
+ <% end %>
33
+ </tbody>
34
+ </table>
@@ -0,0 +1,94 @@
1
+ <%= render :partial => 'spree/admin/shared/order_tabs', :locals => { :current => 'Customer Returns' } %>
2
+
3
+ <% content_for :page_title do %>
4
+ <i class="fa fa-arrow-right"></i> <%= Spree.t(:reimbursement) %> #<%= @reimbursement.number %>
5
+ <% end %>
6
+
7
+ <% content_for :page_actions do %>
8
+ <li><%= button_link_to Spree.t(:back_to_customer_return), url_for([:edit, :admin, @order, @reimbursement.customer_return]), :icon => 'arrow-left' %></li>
9
+ <% end %>
10
+
11
+ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @reimbursement } %>
12
+
13
+ <fieldset class='no-border-bottom'>
14
+ <legend align='center'><%= Spree.t(:items_reimbursed) %></legend>
15
+ <table class="index reimbursement-reimbursement-items-table">
16
+ <thead>
17
+ <tr>
18
+ <th><%= Spree.t(:product) %></th>
19
+ <th><%= Spree.t(:preferred_reimbursement_type) %></th>
20
+ <th><%= Spree.t(:reimbursement_type_override) %></th>
21
+ <th><%= Spree.t(:exchange_for) %></th>
22
+ <th><%= Spree.t(:pre_tax_amount) %></th>
23
+ <th><%= Spree.t(:total) %></th>
24
+ </tr>
25
+ </thead>
26
+ <tbody>
27
+ <% @reimbursement.return_items.each do |return_item| %>
28
+
29
+ <tr>
30
+ <td>
31
+ <div class="variant-name"><%= return_item.inventory_unit.variant.name %></div>
32
+ <div class="variant-options"><%= return_item.inventory_unit.variant.options_text %></div>
33
+ </td>
34
+ <td class="align-center">
35
+ <%= reimbursement_type_name(return_item.preferred_reimbursement_type) %>
36
+ </td>
37
+ <td class='align-center'>
38
+ <%= reimbursement_type_name(return_item.override_reimbursement_type) %>
39
+ </td>
40
+ <td>
41
+ <%= return_item.exchange_variant.try(:options_text) %>
42
+ </td>
43
+ <td class="align-center">
44
+ <%= return_item.display_pre_tax_amount %>
45
+ </td>
46
+ <td class="align-center">
47
+ <%= return_item.display_total %>
48
+ </td>
49
+ </tr>
50
+
51
+ <% end %>
52
+ </tbody>
53
+ </table>
54
+ </fieldset>
55
+
56
+ <fieldset class="no-border-bottom">
57
+ <legend align='center'><%= Spree.t(:refunds) %></legend>
58
+ <table class="index">
59
+ <thead data-hook="customer_return_header">
60
+ <tr>
61
+ <th><%= Spree.t(:description) %></th>
62
+ <th><%= Spree.t(:amount) %></th>
63
+ </tr>
64
+ </thead>
65
+ <tbody>
66
+ <% @reimbursement.refunds.each do |refund| %>
67
+ <tr id="<%= spree_dom_id(refund) %>" data-hook="reimbursement_refund_row" class="<%= cycle('odd', 'even')%>">
68
+ <td><%= refund.description %></td>
69
+ <td><%= refund.display_amount %></td>
70
+ </tr>
71
+ <% end %>
72
+ </tbody>
73
+ </table>
74
+ </fieldset>
75
+
76
+ <fieldset class="no-border-bottom">
77
+ <legend align='center'><%= Spree.t(:credits) %></legend>
78
+ <table class="index">
79
+ <thead data-hook="customer_return_header">
80
+ <tr>
81
+ <th><%= Spree.t(:description) %></th>
82
+ <th><%= Spree.t(:amount) %></th>
83
+ </tr>
84
+ </thead>
85
+ <tbody>
86
+ <% @reimbursement.credits.each do |credit| %>
87
+ <tr id="<%= spree_dom_id(credit) %>" data-hook="reimbursement_refund_row" class="<%= cycle('odd', 'even')%>">
88
+ <td><%= credit.description %></td>
89
+ <td><%= credit.display_amount %></td>
90
+ </tr>
91
+ <% end %>
92
+ </tbody>
93
+ </table>
94
+ </fieldset>
@@ -0,0 +1,4 @@
1
+ <%= render partial: 'spree/admin/shared/named_types/edit', locals: {
2
+ page_title: Spree.t(:editing_rma_reason),
3
+ back_button_text: Spree.t(:back_to_rma_reason_list)
4
+ } %>
@@ -0,0 +1,5 @@
1
+ <%= render partial: 'spree/admin/shared/named_types/index', locals: {
2
+ page_title: Spree.t(:return_authorization_reasons),
3
+ new_button_text: Spree.t(:new_rma_reason),
4
+ resource_name: I18n.t(:other, scope: 'activerecord.models.spree/return_authorization_reason')
5
+ } %>
@@ -0,0 +1,4 @@
1
+ <%= render partial: 'spree/admin/shared/named_types/new', locals: {
2
+ page_title: Spree.t(:new_rma_reason),
3
+ back_button_text: Spree.t(:back_to_rma_reason_list)
4
+ } %>