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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree/backend/address_states.js +1 -3
- data/app/assets/javascripts/spree/backend/adjustments.js.coffee +1 -2
- data/app/assets/javascripts/spree/backend/admin.js.erb +11 -1
- data/app/assets/javascripts/spree/backend/checkouts/edit.js +1 -20
- data/app/assets/javascripts/spree/backend/line_items.js.coffee +2 -5
- data/app/assets/javascripts/spree/backend/line_items_on_order_edit.js.erb +50 -0
- data/app/assets/javascripts/spree/backend/option_type_autocomplete.js.erb +2 -4
- data/app/assets/javascripts/spree/backend/orders/edit_form.js +2 -3
- data/app/assets/javascripts/spree/backend/payments/edit.js.coffee +5 -5
- data/app/assets/javascripts/spree/backend/product_picker.js +2 -4
- data/app/assets/javascripts/spree/backend/returns/expedited_exchanges_warning.coffee +4 -0
- data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +35 -0
- data/app/assets/javascripts/spree/backend/shipments.js.erb +39 -52
- data/app/assets/javascripts/spree/backend/stock_movement.js.coffee +1 -2
- data/app/assets/javascripts/spree/backend/stock_transfer.js.coffee +1 -2
- data/app/assets/javascripts/spree/backend/taxon_autocomplete.js.erb +8 -6
- data/app/assets/javascripts/spree/backend/taxonomy.js.coffee +5 -24
- data/app/assets/javascripts/spree/backend/taxons.js.coffee +2 -4
- data/app/assets/javascripts/spree/backend/user_picker.js +2 -3
- data/app/assets/javascripts/spree/backend/variant_autocomplete.js.coffee.erb +2 -2
- data/app/assets/stylesheets/spree/backend/components/_navigation.scss +0 -5
- data/app/assets/stylesheets/spree/backend/plugins/_select2.scss +5 -2
- data/app/assets/stylesheets/spree/backend/sections/_adjustments_table.scss +8 -0
- data/app/assets/stylesheets/spree/backend/sections/_products.scss +4 -0
- data/app/assets/stylesheets/spree/backend/sections/_return_authorizations.scss +24 -0
- data/app/assets/stylesheets/spree/backend/sections/_taxons.scss +1 -7
- data/app/assets/stylesheets/spree/backend/shared/_tables.scss +8 -0
- data/app/assets/stylesheets/spree/backend/spree_admin.scss +2 -0
- data/app/assets/stylesheets/spree/backend.css +1 -1
- data/app/controllers/spree/admin/adjustments_controller.rb +1 -7
- data/app/controllers/spree/admin/base_controller.rb +8 -2
- data/app/controllers/spree/admin/customer_returns_controller.rb +67 -0
- data/app/controllers/spree/admin/general_settings_controller.rb +1 -1
- data/app/controllers/spree/admin/images_controller.rb +1 -1
- data/app/controllers/spree/admin/log_entries_controller.rb +2 -2
- data/app/controllers/spree/admin/option_types_controller.rb +1 -1
- data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -2
- data/app/controllers/spree/admin/orders_controller.rb +21 -10
- data/app/controllers/spree/admin/payment_methods_controller.rb +3 -3
- data/app/controllers/spree/admin/payments_controller.rb +6 -12
- data/app/controllers/spree/admin/product_properties_controller.rb +2 -2
- data/app/controllers/spree/admin/products_controller.rb +1 -1
- data/app/controllers/spree/admin/promotion_actions_controller.rb +2 -2
- data/app/controllers/spree/admin/promotion_categories_controller.rb +6 -0
- data/app/controllers/spree/admin/promotion_rules_controller.rb +2 -2
- data/app/controllers/spree/admin/promotions_controller.rb +2 -1
- data/app/controllers/spree/admin/refund_reasons_controller.rb +6 -0
- data/app/controllers/spree/admin/refunds_controller.rb +31 -0
- data/app/controllers/spree/admin/reimbursement_types_controller.rb +6 -0
- data/app/controllers/spree/admin/reimbursements_controller.rb +44 -0
- data/app/controllers/spree/admin/resource_controller.rb +2 -2
- data/app/controllers/spree/admin/return_authorization_reasons_controller.rb +6 -0
- data/app/controllers/spree/admin/return_authorizations_controller.rb +35 -5
- data/app/controllers/spree/admin/return_items_controller.rb +9 -0
- data/app/controllers/spree/admin/search_controller.rb +1 -1
- data/app/controllers/spree/admin/shipping_methods_controller.rb +3 -3
- data/app/controllers/spree/admin/states_controller.rb +1 -1
- data/app/controllers/spree/admin/stock_items_controller.rb +1 -1
- data/app/controllers/spree/admin/stock_locations_controller.rb +1 -1
- data/app/controllers/spree/admin/stock_transfers_controller.rb +2 -2
- data/app/controllers/spree/admin/tax_rates_controller.rb +1 -1
- data/app/controllers/spree/admin/users_controller.rb +4 -4
- data/app/controllers/spree/admin/variants_controller.rb +2 -2
- data/app/controllers/spree/admin/zones_controller.rb +1 -1
- data/app/helpers/spree/admin/customer_returns_helper.rb +9 -0
- data/app/helpers/spree/admin/navigation_helper.rb +1 -1
- data/app/helpers/spree/admin/reimbursement_type_helper.rb +9 -0
- data/app/helpers/spree/admin/reimbursements_helper.rb +14 -0
- data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +7 -3
- data/app/views/spree/admin/customer_returns/_reimbursements_table.html.erb +36 -0
- data/app/views/spree/admin/customer_returns/_return_item_decision.html.erb +50 -0
- data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +43 -0
- data/app/views/spree/admin/customer_returns/edit.html.erb +65 -0
- data/app/views/spree/admin/customer_returns/index.html.erb +60 -0
- data/app/views/spree/admin/customer_returns/new.html.erb +60 -0
- data/app/views/spree/admin/general_settings/edit.html.erb +6 -0
- data/app/views/spree/admin/images/_form.html.erb +6 -6
- data/app/views/spree/admin/log_entries/_credit_card.html.erb +4 -0
- data/app/views/spree/admin/log_entries/index.html.erb +2 -5
- data/app/views/spree/admin/option_types/_option_value_fields.html.erb +5 -7
- data/app/views/spree/admin/option_types/edit.html.erb +9 -2
- data/app/views/spree/admin/orders/_add_line_item.html.erb +18 -0
- data/app/views/spree/admin/orders/_form.html.erb +7 -7
- data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +40 -0
- data/app/views/spree/admin/orders/_shipment.html.erb +1 -1
- data/app/views/spree/admin/orders/_shipment_manifest.html.erb +5 -4
- data/app/views/spree/admin/orders/cart.html.erb +39 -0
- data/app/views/spree/admin/orders/customer_details/_form.html.erb +1 -1
- data/app/views/spree/admin/orders/edit.html.erb +2 -2
- data/app/views/spree/admin/orders/index.html.erb +8 -14
- data/app/views/spree/admin/payment_methods/_form.html.erb +7 -7
- data/app/views/spree/admin/payments/_list.html.erb +11 -3
- data/app/views/spree/admin/payments/index.html.erb +13 -1
- data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +4 -6
- data/app/views/spree/admin/products/_form.html.erb +20 -6
- data/app/views/spree/admin/products/new.html.erb +3 -3
- data/app/views/spree/admin/products/stock.html.erb +1 -1
- data/app/views/spree/admin/promotion_categories/_form.html.erb +10 -0
- data/app/views/spree/admin/promotion_categories/edit.html.erb +17 -0
- data/app/views/spree/admin/promotion_categories/index.html.erb +34 -0
- data/app/views/spree/admin/promotion_categories/new.html.erb +16 -0
- data/app/views/spree/admin/promotion_rules/create.js.erb +2 -0
- data/app/views/spree/admin/promotions/_actions.html.erb +1 -1
- data/app/views/spree/admin/promotions/_form.html.erb +5 -0
- data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +7 -7
- data/app/views/spree/admin/promotions/index.html.erb +16 -6
- data/app/views/spree/admin/promotions/rules/_item_total.html.erb +4 -2
- data/app/views/spree/admin/promotions/rules/_one_use_per_user.html.erb +0 -0
- data/app/views/spree/admin/promotions/rules/_taxon.html.erb +9 -0
- data/app/views/spree/admin/prototypes/_form.html.erb +2 -2
- data/app/views/spree/admin/refund_reasons/edit.html.erb +4 -0
- data/app/views/spree/admin/refund_reasons/index.html.erb +5 -0
- data/app/views/spree/admin/refund_reasons/new.html.erb +4 -0
- data/app/views/spree/admin/refunds/edit.html.erb +31 -0
- data/app/views/spree/admin/refunds/new.html.erb +43 -0
- data/app/views/spree/admin/reimbursement_types/index.html.erb +33 -0
- data/app/views/spree/admin/reimbursements/edit.html.erb +108 -0
- data/app/views/spree/admin/reimbursements/index.html.erb +34 -0
- data/app/views/spree/admin/reimbursements/show.html.erb +94 -0
- data/app/views/spree/admin/return_authorization_reasons/edit.html.erb +4 -0
- data/app/views/spree/admin/return_authorization_reasons/index.html.erb +5 -0
- data/app/views/spree/admin/return_authorization_reasons/new.html.erb +4 -0
- data/app/views/spree/admin/return_authorizations/_form.html.erb +62 -50
- data/app/views/spree/admin/return_authorizations/edit.html.erb +6 -8
- data/app/views/spree/admin/return_authorizations/index.html.erb +3 -4
- data/app/views/spree/admin/return_authorizations/new.html.erb +1 -1
- data/app/views/spree/admin/shared/_configuration_menu.html.erb +5 -2
- data/app/views/spree/admin/shared/_destroy.js.erb +1 -1
- data/app/views/spree/admin/shared/_head.html.erb +1 -2
- data/app/views/spree/admin/shared/_order_submenu.html.erb +17 -3
- data/app/views/spree/admin/shared/_order_summary.html.erb +7 -0
- data/app/views/spree/admin/shared/_product_tabs.html.erb +1 -0
- data/app/views/spree/admin/shared/_refunds.html.erb +32 -0
- data/app/views/spree/admin/shared/_report_order_criteria.html.erb +12 -12
- data/app/views/spree/admin/shared/_tabs.html.erb +2 -2
- data/app/views/spree/admin/shared/named_types/_edit.html.erb +17 -0
- data/app/views/spree/admin/shared/named_types/_form.html.erb +16 -0
- data/app/views/spree/admin/shared/named_types/_index.html.erb +52 -0
- data/app/views/spree/admin/shared/named_types/_new.html.erb +16 -0
- data/app/views/spree/admin/shipping_categories/_form.html.erb +1 -1
- data/app/views/spree/admin/shipping_methods/_form.html.erb +8 -0
- data/app/views/spree/admin/stock_locations/_form.html.erb +77 -59
- data/app/views/spree/admin/stock_transfers/new.html.erb +2 -2
- data/app/views/spree/admin/tax_categories/_form.html.erb +9 -2
- data/app/views/spree/admin/tax_categories/index.html.erb +4 -1
- data/app/views/spree/admin/taxons/index.html.erb +4 -0
- data/app/views/spree/admin/trackers/_form.html.erb +4 -4
- data/app/views/spree/admin/users/_form.html.erb +1 -1
- data/app/views/spree/admin/users/index.html.erb +1 -1
- data/app/views/spree/admin/variants/_autocomplete_line_items_stock.js.erb +49 -0
- data/app/views/spree/admin/variants/_autocomplete_stock.js.erb +0 -1
- data/app/views/spree/admin/variants/_split.js.erb +1 -1
- data/app/views/spree/admin/zones/_form.html.erb +1 -1
- data/config/initializers/assets.rb +1 -1
- data/config/routes.rb +22 -1
- metadata +62 -32
- data/app/controllers/spree/admin/inventory_units_controller.rb +0 -6
- data/app/controllers/spree/admin/line_items_controller.rb +0 -49
- data/app/controllers/spree/admin/overview_controller.rb +0 -11
- data/app/views/spree/admin/inventory_units/adjust.html.erb +0 -31
- data/app/views/spree/test_mailer/test_email.text.erb +0 -4
- data/config/locales/en.yml +0 -6
@@ -3,8 +3,9 @@ module Spree
|
|
3
3
|
class ReturnAuthorizationsController < ResourceController
|
4
4
|
belongs_to 'spree/order', :find_by => :number
|
5
5
|
|
6
|
-
|
7
|
-
create.
|
6
|
+
before_action :load_form_data, only: [:new, :edit]
|
7
|
+
create.fails :load_form_data
|
8
|
+
update.fails :load_form_data
|
8
9
|
|
9
10
|
def fire
|
10
11
|
@return_authorization.send("#{params[:e]}!")
|
@@ -12,10 +13,39 @@ module Spree
|
|
12
13
|
redirect_to :back
|
13
14
|
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
private
|
17
|
+
|
18
|
+
def load_form_data
|
19
|
+
load_return_items
|
20
|
+
load_reimbursement_types
|
21
|
+
load_return_authorization_reasons
|
22
|
+
end
|
23
|
+
|
24
|
+
# To satisfy how nested attributes works we want to create placeholder ReturnItems for
|
25
|
+
# any InventoryUnits that have not already been added to the ReturnAuthorization.
|
26
|
+
def load_return_items
|
27
|
+
all_inventory_units = @return_authorization.order.inventory_units
|
28
|
+
associated_inventory_units = @return_authorization.return_items.map(&:inventory_unit)
|
29
|
+
unassociated_inventory_units = all_inventory_units - associated_inventory_units
|
30
|
+
|
31
|
+
new_return_items = unassociated_inventory_units.map do |new_unit|
|
32
|
+
Spree::ReturnItem.new(inventory_unit: new_unit).tap(&:set_default_pre_tax_amount)
|
18
33
|
end
|
34
|
+
|
35
|
+
@form_return_items = (@return_authorization.return_items + new_return_items).sort_by(&:inventory_unit_id)
|
36
|
+
end
|
37
|
+
|
38
|
+
def load_reimbursement_types
|
39
|
+
@reimbursement_types = Spree::ReimbursementType.accessible_by(current_ability, :read).active
|
40
|
+
end
|
41
|
+
|
42
|
+
def load_return_authorization_reasons
|
43
|
+
@reasons = Spree::ReturnAuthorizationReason.active
|
44
|
+
# Only allow an inactive reason if it's already associated to the RMA
|
45
|
+
if @return_authorization.reason && !@return_authorization.reason.active?
|
46
|
+
@reasons << @return_authorization.reason
|
47
|
+
end
|
48
|
+
end
|
19
49
|
end
|
20
50
|
end
|
21
51
|
end
|
@@ -2,7 +2,7 @@ module Spree
|
|
2
2
|
module Admin
|
3
3
|
class SearchController < Spree::Admin::BaseController
|
4
4
|
# http://spreecommerce.com/blog/2010/11/02/json-hijacking-vulnerability/
|
5
|
-
|
5
|
+
before_action :check_json_authenticity, only: :index
|
6
6
|
respond_to :json
|
7
7
|
|
8
8
|
# TODO: Clean this up by moving searching out to user_class_extensions
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
class ShippingMethodsController < ResourceController
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
before_action :load_data, except: :index
|
5
|
+
before_action :set_shipping_category, only: [:create, :update]
|
6
|
+
before_action :set_zones, only: [:create, :update]
|
7
7
|
|
8
8
|
def destroy
|
9
9
|
@object.destroy
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
class StockTransfersController < Admin::BaseController
|
4
|
-
|
4
|
+
before_action :load_stock_locations, only: :index
|
5
5
|
|
6
6
|
def index
|
7
7
|
@q = StockTransfer.ransack(params[:q])
|
@@ -37,7 +37,7 @@ module Spree
|
|
37
37
|
|
38
38
|
private
|
39
39
|
def load_stock_locations
|
40
|
-
@stock_locations = Spree::StockLocation.active.
|
40
|
+
@stock_locations = Spree::StockLocation.active.order_default
|
41
41
|
end
|
42
42
|
|
43
43
|
def source_location
|
@@ -3,11 +3,11 @@ module Spree
|
|
3
3
|
class UsersController < ResourceController
|
4
4
|
rescue_from Spree::Core::DestroyWithOrdersError, :with => :user_destroy_with_orders_error
|
5
5
|
|
6
|
-
|
6
|
+
after_action :sign_in_if_change_own_password, only: :update
|
7
7
|
|
8
8
|
# http://spreecommerce.com/blog/2010/11/02/json-hijacking-vulnerability/
|
9
|
-
|
10
|
-
|
9
|
+
before_action :check_json_authenticity, only: :index
|
10
|
+
before_action :load_roles
|
11
11
|
|
12
12
|
def index
|
13
13
|
respond_with(@collection) do |format|
|
@@ -66,7 +66,7 @@ module Spree
|
|
66
66
|
|
67
67
|
def orders
|
68
68
|
params[:q] ||= {}
|
69
|
-
@search = Spree::Order.ransack(params[:q].merge(user_id_eq: @user.id))
|
69
|
+
@search = Spree::Order.reverse_chronological.ransack(params[:q].merge(user_id_eq: @user.id))
|
70
70
|
@orders = @search.result.page(params[:page]).per(Spree::Config[:admin_products_per_page])
|
71
71
|
end
|
72
72
|
|
@@ -3,9 +3,9 @@ module Spree
|
|
3
3
|
class VariantsController < ResourceController
|
4
4
|
belongs_to 'spree/product', :find_by => :slug
|
5
5
|
new_action.before :new_before
|
6
|
-
|
6
|
+
before_action :load_data, only: [:new, :create, :edit, :update]
|
7
7
|
|
8
|
-
# override the
|
8
|
+
# override the destroy method to set deleted_at value
|
9
9
|
# instead of actually deleting the product.
|
10
10
|
def destroy
|
11
11
|
@variant = Variant.find(params[:id])
|
@@ -145,7 +145,7 @@ module Spree
|
|
145
145
|
end
|
146
146
|
|
147
147
|
def configurations_sidebar_menu_item(link_text, url, options = {})
|
148
|
-
is_active = url.ends_with?(controller.controller_name) ||
|
148
|
+
is_active = url.ends_with?(controller.controller_name) ||
|
149
149
|
url.ends_with?("#{controller.controller_name}/edit") ||
|
150
150
|
url.ends_with?("#{controller.controller_name.singularize}/edit")
|
151
151
|
options.merge!(:class => is_active ? 'active' : nil)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module ReimbursementsHelper
|
4
|
+
def reimbursement_status_color(reimbursement)
|
5
|
+
case reimbursement.reimbursement_status
|
6
|
+
when 'reimbursed' then 'success'
|
7
|
+
when 'pending' then 'notice'
|
8
|
+
when 'errored' then 'error'
|
9
|
+
else raise "unknown reimbursement status: #{reimbursement.reimbursement_status}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -10,10 +10,14 @@
|
|
10
10
|
</thead>
|
11
11
|
<tbody>
|
12
12
|
<%= render :partial => "adjustment", :collection => @adjustments %>
|
13
|
-
<tr>
|
13
|
+
<tr data-hook="adjustment_buttons">
|
14
14
|
<td class="align-center" colspan='4'>
|
15
|
-
|
16
|
-
|
15
|
+
<div>
|
16
|
+
<%= button_to Spree.t(:open_all_adjustments), open_adjustments_admin_order_path(@order), method: :get %>
|
17
|
+
</div>
|
18
|
+
<div>
|
19
|
+
<%= button_to Spree.t(:close_all_adjustments), close_adjustments_admin_order_path(@order), method: :get %>
|
20
|
+
</div>
|
17
21
|
</td>
|
18
22
|
<td class='actions'> </td>
|
19
23
|
</tr>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<table class="index">
|
2
|
+
<thead data-hook="customer_return_header">
|
3
|
+
<tr>
|
4
|
+
<th><%= Spree.t(:number) %></th>
|
5
|
+
<th><%= Spree.t(:total) %></th>
|
6
|
+
<th><%= Spree.t(:status) %></th>
|
7
|
+
<th><%= "#{Spree.t('date')}/#{Spree.t('time')}" %></th>
|
8
|
+
<th class="actions"></th>
|
9
|
+
</tr>
|
10
|
+
</thead>
|
11
|
+
<tbody>
|
12
|
+
<% reimbursements.each do |reimbursement| %>
|
13
|
+
<tr id="<%= spree_dom_id(reimbursement) %>" data-hook="reimbursement_row" class="<%= cycle('odd', 'even')%>">
|
14
|
+
<td>
|
15
|
+
<% if reimbursement.reimbursed? %>
|
16
|
+
<%= link_to reimbursement.number, url_for([:admin, @order, reimbursement]) %>
|
17
|
+
<% else %>
|
18
|
+
<%= reimbursement.number %>
|
19
|
+
<% end %>
|
20
|
+
</td>
|
21
|
+
<td><%= reimbursement.display_total %></td>
|
22
|
+
<td>
|
23
|
+
<span class="state <%= reimbursement_status_color(reimbursement) %>">
|
24
|
+
<%= reimbursement.reimbursement_status %>
|
25
|
+
</span>
|
26
|
+
</td>
|
27
|
+
<td><%= pretty_time(reimbursement.created_at) %></td>
|
28
|
+
<td class="actions">
|
29
|
+
<% if !reimbursement.reimbursed? %>
|
30
|
+
<%= link_to_edit_url url_for([:edit, :admin, @order, reimbursement]), title: "admin_edit_#{dom_id(reimbursement)}", no_text: true %>
|
31
|
+
<% end %>
|
32
|
+
</td>
|
33
|
+
</tr>
|
34
|
+
<% end %>
|
35
|
+
</tbody>
|
36
|
+
</table>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<table class="show return-items-table">
|
2
|
+
<thead>
|
3
|
+
<tr>
|
4
|
+
<th><%= Spree.t(:product) %></th>
|
5
|
+
<th><%= Spree.t(:sku) %></th>
|
6
|
+
<th><%= Spree.t(:pre_tax_amount) %></th>
|
7
|
+
<th><%= Spree.t(:preferred_reimbursement_type) %></th>
|
8
|
+
<th><%= Spree.t(:exchange_for) %></th>
|
9
|
+
<th><%= Spree.t(:acceptance_errors) %></th>
|
10
|
+
<% if show_decision %>
|
11
|
+
<th class="actions"></th>
|
12
|
+
<% end %>
|
13
|
+
</tr>
|
14
|
+
</thead>
|
15
|
+
<tbody>
|
16
|
+
<% return_items.each do |return_item| %>
|
17
|
+
<tr>
|
18
|
+
<td>
|
19
|
+
<div class="variant-name"><%= return_item.inventory_unit.variant.name %></div>
|
20
|
+
<div class="variant-options"><%= return_item.inventory_unit.variant.options_text %></div>
|
21
|
+
</td>
|
22
|
+
<td>
|
23
|
+
<%= return_item.inventory_unit.variant.sku %>
|
24
|
+
</td>
|
25
|
+
<td class="align-center">
|
26
|
+
<%= return_item.display_pre_tax_amount %>
|
27
|
+
</td>
|
28
|
+
<td class="align-center">
|
29
|
+
<%= reimbursement_type_name(return_item.preferred_reimbursement_type) %>
|
30
|
+
</td>
|
31
|
+
<td class="align-center">
|
32
|
+
<%= return_item.exchange_variant.try(:options_text) %>
|
33
|
+
</td>
|
34
|
+
<td class="align-center">
|
35
|
+
<%= return_item.acceptance_status_errors %>
|
36
|
+
</td>
|
37
|
+
<% if show_decision %>
|
38
|
+
<td class='actions'>
|
39
|
+
<%= button_to [:admin, return_item], { class: 'fa fa-thumbs-up icon_link no-text with-tip', params: { "return_item[acceptance_status]" => 'accepted' }, "data-action" => 'save', title: Spree.t(:accept), method: 'put' } do %>
|
40
|
+
Spree.t(:accept)
|
41
|
+
<% end %>
|
42
|
+
<%= button_to [:admin, return_item], { class: 'fa fa-thumbs-down icon_link no-text with-tip', params: { "return_item[acceptance_status]" => 'rejected' }, "data-action" => 'remove', title: Spree.t(:reject), method: 'put' } do %>
|
43
|
+
Spree.t(:reject)
|
44
|
+
<% end %>
|
45
|
+
</td>
|
46
|
+
<% end %>
|
47
|
+
</tr>
|
48
|
+
<% end %>
|
49
|
+
</tbody>
|
50
|
+
</table>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<table class="index return-items-table">
|
2
|
+
<thead>
|
3
|
+
<tr>
|
4
|
+
<th>
|
5
|
+
<%= check_box_tag 'select-all' %>
|
6
|
+
</th>
|
7
|
+
<th><%= Spree.t(:product) %></th>
|
8
|
+
<th><%= Spree.t(:sku) %></th>
|
9
|
+
<th><%= Spree.t(:pre_tax_amount) %></th>
|
10
|
+
<th><%= Spree.t(:exchange_for) %></th>
|
11
|
+
</tr>
|
12
|
+
</thead>
|
13
|
+
<tbody>
|
14
|
+
<%= f.fields_for :return_items, return_items do |item_fields| %>
|
15
|
+
<% return_item = item_fields.object %>
|
16
|
+
|
17
|
+
<tr>
|
18
|
+
<td class="align-center" class="inventory-unit-checkbox">
|
19
|
+
<div style="display:none">
|
20
|
+
<%= item_fields.hidden_field :inventory_unit_id %>
|
21
|
+
<%= item_fields.hidden_field :return_authorization_id %>
|
22
|
+
<%= item_fields.hidden_field :pre_tax_amount %>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<%= item_fields.check_box :returned, {checked: false, class: 'add-item', "data-price" => return_item.pre_tax_amount}, '1', '0' %>
|
26
|
+
</td>
|
27
|
+
<td>
|
28
|
+
<div class="variant-name"><%= return_item.inventory_unit.variant.name %></div>
|
29
|
+
<div class="variant-options"><%= return_item.inventory_unit.variant.options_text %></div>
|
30
|
+
</td>
|
31
|
+
<td>
|
32
|
+
<%= return_item.inventory_unit.variant.sku %>
|
33
|
+
</td>
|
34
|
+
<td class="align-center">
|
35
|
+
<%= return_item.display_pre_tax_amount %>
|
36
|
+
</td>
|
37
|
+
<td class="align-center">
|
38
|
+
<%= return_item.exchange_variant.try(:options_text) %>
|
39
|
+
</td>
|
40
|
+
</tr>
|
41
|
+
<% end %>
|
42
|
+
</tbody>
|
43
|
+
</table>
|
@@ -0,0 +1,65 @@
|
|
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(:customer_return) %> #<%= @customer_return.number %>
|
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
|
+
<% if @manual_intervention_return_items.any? %>
|
12
|
+
<fieldset data-hook="manual_intervention_return_items" class="no-border-bottom">
|
13
|
+
<legend align="center"><%= Spree.t(:manual_intervention_required) %></legend>
|
14
|
+
<%= render partial: 'return_item_decision', locals: {return_items: @manual_intervention_return_items, show_decision: true} %>
|
15
|
+
</fieldset>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<% if @pending_return_items.any? %>
|
19
|
+
<fieldset data-hook="accepted_return_items" class="no-border-bottom">
|
20
|
+
<legend align="center"><%= Spree.t(:pending) %></legend>
|
21
|
+
<%= render partial: 'return_item_decision', locals: {return_items: @pending_return_items, show_decision: true} %>
|
22
|
+
</fieldset>
|
23
|
+
<% end %>
|
24
|
+
|
25
|
+
<% if @accepted_return_items.any? %>
|
26
|
+
<fieldset data-hook="accepted_return_items" class="no-border-bottom">
|
27
|
+
<legend align="center"><%= Spree.t(:accepted) %></legend>
|
28
|
+
<%= render partial: 'return_item_decision', locals: {return_items: @accepted_return_items, show_decision: false} %>
|
29
|
+
</fieldset>
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
<% if @rejected_return_items.any? %>
|
33
|
+
<fieldset data-hook="rejected_return_items" class="no-border-bottom">
|
34
|
+
<legend align="center"><%= Spree.t(:rejected) %></legend>
|
35
|
+
<%= render partial: 'return_item_decision', locals: {return_items: @rejected_return_items, show_decision: false} %>
|
36
|
+
</fieldset>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
<% if !@customer_return.fully_reimbursed? && @pending_reimbursements.empty? %>
|
40
|
+
<fieldset data-hook="reimbursements" class="no-border-bottom no-border-top align-center">
|
41
|
+
<% if @customer_return.completely_decided? %>
|
42
|
+
<%= form_for [:admin, @order, Spree::Reimbursement.new] do |f| %>
|
43
|
+
<%= hidden_field_tag :build_from_customer_return_id, @customer_return.id %>
|
44
|
+
<%= f.button class: 'button fa fa-reply' do %>
|
45
|
+
<%= Spree.t(:create_reimbursement) %>
|
46
|
+
<% end %>
|
47
|
+
<% end %>
|
48
|
+
<% else %>
|
49
|
+
<div class="no-objects-found">
|
50
|
+
<%= Spree.t(:unable_to_create_reimbursements) %>
|
51
|
+
</div>
|
52
|
+
<% end %>
|
53
|
+
</fieldset>
|
54
|
+
<% end %>
|
55
|
+
|
56
|
+
<fieldset data-hook="reimbursements" class="no-border-bottom align-center">
|
57
|
+
<legend align="center"><%= Spree.t(:reimbursements) %></legend>
|
58
|
+
<% if @customer_return.reimbursements.any? %>
|
59
|
+
<%= render partial: 'reimbursements_table', locals: {reimbursements: @customer_return.reimbursements} %>
|
60
|
+
<% else %>
|
61
|
+
<div class="no-objects-found">
|
62
|
+
<%= Spree.t(:none) %>
|
63
|
+
</div>
|
64
|
+
<% end %>
|
65
|
+
</fieldset>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
<%= render :partial => 'spree/admin/shared/order_tabs', :locals => { :current => 'Customer Returns' } %>
|
2
|
+
|
3
|
+
<% content_for :page_actions do %>
|
4
|
+
<% if @order.shipments.any?(&:shipped?) %>
|
5
|
+
<li>
|
6
|
+
<%= button_link_to Spree.t(:new_customer_return), spree.new_admin_order_customer_return_path(@order), icon: 'plus' %>
|
7
|
+
</li>
|
8
|
+
<% end %>
|
9
|
+
<li><%= button_link_to Spree.t(:back_to_orders_list), spree.admin_orders_path, :icon => 'arrow-left' %></li>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
<% content_for :page_title do %>
|
13
|
+
<i class="fa fa-arrow-right"></i> <%= Spree.t(:customer_returns) %>
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
<% if @order.shipments.any?(&:shipped?) %>
|
17
|
+
|
18
|
+
<% if @customer_returns.any? %>
|
19
|
+
<table class="index">
|
20
|
+
<thead data-hook="customer_return_header">
|
21
|
+
<tr>
|
22
|
+
<th><%= Spree.t(:return_number) %></th>
|
23
|
+
<th><%= Spree.t(:pre_tax_total) %></th>
|
24
|
+
<th><%= "#{Spree.t('date')}/#{Spree.t('time')}" %></th>
|
25
|
+
<th><%= Spree.t(:reimbursement_status) %></th>
|
26
|
+
<th class="actions"></th>
|
27
|
+
</tr>
|
28
|
+
</thead>
|
29
|
+
<tbody>
|
30
|
+
<% @customer_returns.each do |customer_return| %>
|
31
|
+
<tr id="<%= spree_dom_id(customer_return) %>" data-hook="customer_return_row" class="<%= cycle('odd', 'even')%>">
|
32
|
+
<td><%= link_to customer_return.number, edit_admin_order_customer_return_path(@order, customer_return) %></td>
|
33
|
+
<td><%= customer_return.display_pre_tax_total.to_html %></td>
|
34
|
+
<td><%= pretty_time(customer_return.created_at) %></td>
|
35
|
+
<td>
|
36
|
+
<% if customer_return.fully_reimbursed? %>
|
37
|
+
<span class="state success"><%= Spree.t(:reimbursed) %></span>
|
38
|
+
<% else %>
|
39
|
+
<span class="state notice"><%= Spree.t(:incomplete) %></span>
|
40
|
+
<% end %>
|
41
|
+
</td>
|
42
|
+
<td class='actions align-center' data-hook="admin_orders_customer_returns_index_row_actions">
|
43
|
+
<%= link_to_edit_url edit_admin_order_customer_return_path(@order, customer_return), title: "admin_edit_#{dom_id(customer_return)}", no_text: true %>
|
44
|
+
</td>
|
45
|
+
</tr>
|
46
|
+
<% end %>
|
47
|
+
</tbody>
|
48
|
+
</table>
|
49
|
+
<% else %>
|
50
|
+
<div class="alpha twelve columns no-objects-found">
|
51
|
+
<%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/customer_return')) %>,
|
52
|
+
<%= link_to Spree.t(:add_one), spree.new_admin_order_customer_return_path(@order) %>!
|
53
|
+
</div>
|
54
|
+
<% end %>
|
55
|
+
|
56
|
+
<% else %>
|
57
|
+
<div data-hook="customer_return_cannot_create" class="no-objects-found">
|
58
|
+
<%= Spree.t(:cannot_create_customer_returns) %>
|
59
|
+
</div>
|
60
|
+
<% end %>
|
@@ -0,0 +1,60 @@
|
|
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(:new_customer_return) %>
|
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
|
+
<% if @rma_return_items.any? || @new_return_items.any? %>
|
12
|
+
|
13
|
+
<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @customer_return } %>
|
14
|
+
<%= form_for [:admin, @order, @customer_return] do |f| %>
|
15
|
+
<fieldset class="no-border-top">
|
16
|
+
<div data-hook="admin_customer_return_form_fields">
|
17
|
+
<fieldset class='no-border-bottom'>
|
18
|
+
<legend align='center'><%= Spree.t(:items_in_rmas) %></legend>
|
19
|
+
<% if @rma_return_items.any? %>
|
20
|
+
<%= render partial: 'return_item_selection', locals: {f: f, return_items: @rma_return_items} %>
|
21
|
+
<% else %>
|
22
|
+
<div class="alpha twelve columns no-objects-found"><%= Spree.t(:none) %></div>
|
23
|
+
<% end %>
|
24
|
+
</fieldset>
|
25
|
+
|
26
|
+
<fieldset class='no-border-bottom'>
|
27
|
+
<legend align='center'><%= Spree.t(:other_items_in_other) %></legend>
|
28
|
+
<% if @new_return_items.any? %>
|
29
|
+
<%= render partial: 'return_item_selection', locals: {f: f, return_items: @new_return_items} %>
|
30
|
+
<% else %>
|
31
|
+
<div class="alpha twelve columns no-objects-found"><%= Spree.t(:none) %></div>
|
32
|
+
<% end %>
|
33
|
+
</fieldset>
|
34
|
+
|
35
|
+
<%= f.field_container :stock_location do %>
|
36
|
+
<%= f.label :stock_location, Spree.t(:stock_location) %>
|
37
|
+
<%= f.select :stock_location_id, Spree::StockLocation.order_default.active.to_a.collect{|l|[l.name.humanize, l.id]}, {include_blank: true}, {class: 'select2 fullwidth', "data-placeholder" => Spree.t(:select_a_stock_location)} %>
|
38
|
+
<%= f.error_message_on :stock_location_id %>
|
39
|
+
<% end %>
|
40
|
+
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div class="form-buttons filter-actions actions" data-hook="buttons">
|
44
|
+
<%= button Spree.t(:create), 'ok' %>
|
45
|
+
<span class="or"><%= Spree.t(:or) %></span>
|
46
|
+
<%= button_link_to Spree.t('actions.cancel'), admin_order_customer_returns_url(@order), :icon => 'remove' %>
|
47
|
+
</div>
|
48
|
+
</fieldset>
|
49
|
+
<% end %>
|
50
|
+
|
51
|
+
<% else %>
|
52
|
+
|
53
|
+
<div class="twelve columns">
|
54
|
+
<div class="alpha twelve columns no-objects-found">
|
55
|
+
<%= Spree.t(:all_items_have_been_returned) %>,
|
56
|
+
<%= link_to Spree.t(:back_to_customer_return_list), spree.admin_order_customer_returns_path(@order) %>.
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
|
60
|
+
<% end %>
|
@@ -39,6 +39,12 @@
|
|
39
39
|
<br />
|
40
40
|
<%= f.text_field :url, class: 'fullwidth' %>
|
41
41
|
</div>
|
42
|
+
|
43
|
+
<div class="field" data-hook="admin_general_setting_mail_from_address">
|
44
|
+
<%= f.label :mail_from_address %>
|
45
|
+
<br />
|
46
|
+
<%= f.text_field :mail_from_address, class: 'fullwidth' %>
|
47
|
+
</div>
|
42
48
|
<% end %>
|
43
49
|
|
44
50
|
<div class="row">
|
@@ -1,18 +1,18 @@
|
|
1
1
|
<div data-hook="admin_image_form_fields">
|
2
2
|
<div class="four columns alpha">
|
3
3
|
<div data-hook="file" class="field">
|
4
|
-
<%= f.label Spree.t(:filename) %><br>
|
4
|
+
<%= f.label :attachment, Spree.t(:filename) %><br>
|
5
5
|
<%= f.file_field :attachment %>
|
6
6
|
</div>
|
7
7
|
<div data-hook="variant" class="field">
|
8
|
-
<%= f.label Spree::Variant.model_name.human %><br>
|
9
|
-
<%= f.select :viewable_id, @variants, {}, {:
|
8
|
+
<%= f.label :viewable_id, Spree::Variant.model_name.human %><br>
|
9
|
+
<%= f.select :viewable_id, @variants, {}, { class: 'select2 fullwidth' } %>
|
10
10
|
</div>
|
11
11
|
</div>
|
12
12
|
<div data-hook="alt_text" class="field omega five columns">
|
13
|
-
<%= f.label Spree.t(:alt_text) %><br>
|
14
|
-
<%= f.text_area :alt, :
|
13
|
+
<%= f.label :alt, Spree.t(:alt_text) %><br>
|
14
|
+
<%= f.text_area :alt, rows: 4, class: 'fullwidth' %>
|
15
15
|
</div>
|
16
16
|
</div>
|
17
17
|
|
18
|
-
<div class="clear"></div>
|
18
|
+
<div class="clear"></div>
|
@@ -22,10 +22,7 @@
|
|
22
22
|
</tr>
|
23
23
|
</thead>
|
24
24
|
<tbody>
|
25
|
-
|
26
|
-
<td>Message</td>
|
27
|
-
<td><%= entry.parsed_details.message %></td>
|
28
|
-
</tr>
|
25
|
+
<%= render "spree/admin/log_entries/#{@payment.payment_method.name.gsub(' ', '').underscore}", entry: entry %>
|
29
26
|
</tbody>
|
30
27
|
<% end %>
|
31
|
-
</table>
|
28
|
+
</table>
|