solidus_backend 1.3.0.beta1 → 1.3.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of solidus_backend might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/app/assets/javascripts/spree/backend/select_payments.js.coffee +10 -5
- data/app/controllers/spree/admin/prices_controller.rb +20 -0
- data/app/controllers/spree/admin/stock_transfers_controller.rb +1 -1
- data/app/helpers/spree/admin/products_helper.rb +4 -0
- data/app/views/spree/admin/payments/_form.html.erb +1 -1
- data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +1 -1
- data/app/views/spree/admin/prices/_form.html.erb +52 -0
- data/app/views/spree/admin/prices/_table.html.erb +35 -0
- data/app/views/spree/admin/prices/edit.html.erb +12 -0
- data/app/views/spree/admin/prices/index.html.erb +73 -0
- data/app/views/spree/admin/prices/new.html.erb +7 -0
- data/app/views/spree/admin/prices/new.js.erb +2 -0
- data/app/views/spree/admin/products/_form.html.erb +11 -6
- data/app/views/spree/admin/products/new.html.erb +9 -1
- data/app/views/spree/admin/reimbursements/show.html.erb +1 -1
- data/app/views/spree/admin/search/products.rabl +1 -1
- data/app/views/spree/admin/shared/_product_tabs.html.erb +3 -0
- data/app/views/spree/admin/shared/_rebuild_vat_prices_checkbox.html.erb +12 -0
- data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +1 -1
- data/app/views/spree/admin/shared/_tabs.html.erb +5 -1
- data/app/views/spree/admin/store_credits/edit_amount.html.erb +2 -1
- data/app/views/spree/admin/store_credits/edit_validity.html.erb +2 -1
- data/app/views/spree/admin/store_credits/index.html.erb +2 -1
- data/app/views/spree/admin/store_credits/new.html.erb +2 -1
- data/app/views/spree/admin/store_credits/show.html.erb +2 -1
- data/app/views/spree/admin/users/_sidebar.html.erb +2 -29
- data/app/views/spree/admin/users/_tabs.html.erb +29 -0
- data/app/views/spree/admin/users/addresses.html.erb +2 -1
- data/app/views/spree/admin/users/edit.html.erb +2 -1
- data/app/views/spree/admin/users/items.html.erb +2 -1
- data/app/views/spree/admin/users/orders.html.erb +2 -1
- data/app/views/spree/admin/variants/_form.html.erb +4 -0
- data/config/routes.rb +1 -0
- data/spec/controllers/spree/admin/prices_controller_spec.rb +41 -0
- data/spec/controllers/spree/admin/stock_transfers_controller_spec.rb +12 -0
- data/spec/features/admin/orders/payments_spec.rb +21 -0
- data/spec/features/admin/products/pricing_spec.rb +92 -0
- data/spec/features/admin/reimbursements_spec.rb +16 -0
- data/spec/features/admin/stock_transfer_spec.rb +11 -0
- data/spec/features/admin/users_spec.rb +3 -3
- metadata +18 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51cce8989f8468b9b8c46fa6e106fac9ce528a43
|
4
|
+
data.tar.gz: 97c4feba8c1f166dd176ad53ac9c25d2a53cc487
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 603dfb79d475ca639c882863bf420f219169aabba2768902fc6c3292db11cb3df60f2c204bf88580c2cebfa6dfad6b09b2628f2cc65e1d582cd3b420e35d59e4
|
7
|
+
data.tar.gz: 7be5c607ace3fc7b1b26942312f9a76f7ad2ecb3c8aaf4890992b3a2c0589e50c48f02725794c36ac8ba846dff6f3a661db8c510b265ae0002916a4da9287137
|
data/Gemfile
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
$ ->
|
2
2
|
if $('.new_payment').is('*')
|
3
|
-
$('
|
4
|
-
$('
|
5
|
-
|
6
|
-
|
7
|
-
$("
|
3
|
+
$input = $('input[name="payment[payment_method_id]"]')
|
4
|
+
$paymentMethods = $('.payment-method-settings .payment-methods')
|
5
|
+
|
6
|
+
updateSelected = ->
|
7
|
+
id = $input.filter(":checked").val()
|
8
|
+
$paymentMethods.addClass('hidden')
|
9
|
+
$paymentMethods.filter("#payment_method_#{id}").removeClass('hidden')
|
10
|
+
|
11
|
+
$input.on('click', updateSelected)
|
12
|
+
updateSelected()
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
class PricesController < ResourceController
|
4
|
+
belongs_to 'spree/product', find_by: :slug
|
5
|
+
|
6
|
+
def index
|
7
|
+
params[:q] ||= {}
|
8
|
+
|
9
|
+
@search = @product.prices.accessible_by(current_ability, :index).ransack(params[:q])
|
10
|
+
@prices = @search.result
|
11
|
+
.currently_valid
|
12
|
+
.order(:variant_id, :country_iso, :currency)
|
13
|
+
.page(params[:page]).per(Spree::Config.admin_variants_per_page)
|
14
|
+
end
|
15
|
+
|
16
|
+
def edit
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<label><%= Spree::PaymentMethod.model_name.human %></label>
|
11
11
|
<ul>
|
12
12
|
<% @payment_methods.each do |method| %>
|
13
|
-
<li
|
13
|
+
<li>
|
14
14
|
<label data-hook="payment_method_field">
|
15
15
|
<%= radio_button_tag 'payment[payment_method_id]', method.id, method == @payment_method, { class: "payment_methods_radios" } %>
|
16
16
|
<%= method.name %>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<div data-hook="admin_product_price_fields">
|
2
|
+
|
3
|
+
<div data-hook="admin_product_price_form">
|
4
|
+
<div class="four columns alpha" data-hook="admin_product_price_form_variant">
|
5
|
+
<%= f.field_container :variant do %>
|
6
|
+
<%= f.label :variant %>
|
7
|
+
<%= f.select :variant_id,
|
8
|
+
@product.variants_including_master.map { |v| [v.descriptive_name, v.id] },
|
9
|
+
{},
|
10
|
+
class: "select2 fullwidth", disabled: !f.object.new_record? %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="three columns alpha" data-hook="admin_product_price_form_currency">
|
15
|
+
<%= f.field_container :currency do %>
|
16
|
+
<%= f.label :currency %>
|
17
|
+
<%= f.select :currency,
|
18
|
+
Money::Currency.all.map { |c| ["#{c.iso_code} (#{c.name})", c.iso_code] },
|
19
|
+
{},
|
20
|
+
class: "select2 fullwidth", disabled: !f.object.new_record? %>
|
21
|
+
<% end %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="three columns" data-hook="admin_product_price_form_country">
|
25
|
+
<%= f.field_container :country do %>
|
26
|
+
<%= f.label :country %>
|
27
|
+
<%= f.collection_select :country_iso, available_countries, :iso, :name,
|
28
|
+
{
|
29
|
+
include_blank: t(:any_country, scope: [:spree, :admin, :prices]),
|
30
|
+
selected: Spree::Config.admin_vat_country_iso
|
31
|
+
},
|
32
|
+
{ class: 'select2 fullwidth', disabled: !f.object.new_record? } %>
|
33
|
+
<% end %>
|
34
|
+
</div>
|
35
|
+
|
36
|
+
<div class="three columns" data-hook="admin_product_price_form_amount">
|
37
|
+
<%= f.field_container :price do %>
|
38
|
+
<%= f.label :price %>
|
39
|
+
<%= f.text_field :price, value: f.object.money.format, class: 'fullwidth title' %>
|
40
|
+
<% end %>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div class="field three columns checkbox omega" data-hook="is_default_price">
|
44
|
+
<%= f.label :is_default do %>
|
45
|
+
<%= f.check_box :is_default %>
|
46
|
+
<%= Spree::Price.human_attribute_name(:is_default) %>
|
47
|
+
<% end %>
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
|
52
|
+
<div class="clear"></div>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<%= paginate prices, theme: "solidus_admin" %>
|
2
|
+
|
3
|
+
<table class="index prices">
|
4
|
+
<thead data-hook="prices_header">
|
5
|
+
<tr>
|
6
|
+
<th><%= Spree::Variant.model_name.human %> </th>
|
7
|
+
<th><%= Spree::Price.human_attribute_name(:country) %></th>
|
8
|
+
<th><%= Spree::Price.human_attribute_name(:currency) %></th>
|
9
|
+
<th><%= Spree::Price.human_attribute_name(:amount) %></th>
|
10
|
+
<th class="actions"></th>
|
11
|
+
</tr>
|
12
|
+
</thead>
|
13
|
+
|
14
|
+
<tbody>
|
15
|
+
<% prices.each do |price| %>
|
16
|
+
<tr id="<%= spree_dom_id price %>" data-hook="prices_row" class="<%= "deleted" if price.deleted? %> <%= cycle('odd', 'even')%>">
|
17
|
+
<td><%= price.variant.descriptive_name %></td>
|
18
|
+
<td><%= price.display_country %>
|
19
|
+
<td><%= price.currency %></td>
|
20
|
+
<td class="align-right"><%= price.money.to_html %></td>
|
21
|
+
<td class="actions">
|
22
|
+
<% if can?(:update, price) %>
|
23
|
+
<%= link_to_edit(price, :no_text => true) unless price.deleted? %>
|
24
|
+
<% end %>
|
25
|
+
<% if can?(:destroy, price) %>
|
26
|
+
|
27
|
+
<%= link_to_delete(price, :no_text => true) unless price.deleted? %>
|
28
|
+
<% end %>
|
29
|
+
</td>
|
30
|
+
</tr>
|
31
|
+
<% end %>
|
32
|
+
</tbody>
|
33
|
+
</table>
|
34
|
+
|
35
|
+
<%= paginate prices, theme: "solidus_admin" %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= render 'spree/admin/shared/product_tabs', current: 'Prices' %>
|
2
|
+
|
3
|
+
<%= form_for @price, url: spree.admin_product_price_path(@product, @price) do |f| %>
|
4
|
+
<fieldset>
|
5
|
+
<legend> <%= t('.edit_price') %> </legend>
|
6
|
+
<%= render 'form', f: f %>
|
7
|
+
|
8
|
+
<% if can?(:update, @product) %>
|
9
|
+
<%= render :partial => 'spree/admin/shared/edit_resource_links' %>
|
10
|
+
<% end %>
|
11
|
+
</fieldset>
|
12
|
+
<% end %>
|
@@ -0,0 +1,73 @@
|
|
1
|
+
<%= render 'spree/admin/shared/product_tabs', current: 'Prices' %>
|
2
|
+
|
3
|
+
<% content_for :page_actions do %>
|
4
|
+
<li id="new_price_link">
|
5
|
+
<%= button_link_to t(".new_price"), new_object_url, { :remote => true, :icon => 'plus', :id => 'admin_new_product' } %>
|
6
|
+
</li>
|
7
|
+
<% end if can?(:create, Spree::Product) %>
|
8
|
+
|
9
|
+
<% content_for :table_filter_title do %>
|
10
|
+
<%= Spree.t(:search) %>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<% content_for :table_filter do %>
|
14
|
+
<div data-hook="admin_product_prices_index_search">
|
15
|
+
<%= search_form_for [:admin, :product, @search] do |f| %>
|
16
|
+
|
17
|
+
<div class="alpha four columns">
|
18
|
+
<div class="field" data-hook="sku-select">
|
19
|
+
<%= label_tag :q_variant_id_eq, Spree::Variant.model_name.human %>
|
20
|
+
<%= f.select :variant_id_eq,
|
21
|
+
@product.variants_including_master.map { |v| [v.descriptive_name, v.id] },
|
22
|
+
{include_blank: true},
|
23
|
+
class: "select2 fullwidth" %>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
|
27
|
+
<div class="three columns">
|
28
|
+
<div class="field" data-hook="currency-select">
|
29
|
+
<%= label_tag :q_currency_eq, Spree::Price.human_attribute_name(:currency) %>
|
30
|
+
<%= f.select :currency_eq,
|
31
|
+
@prices.map(&:currency).uniq,
|
32
|
+
{include_blank: true},
|
33
|
+
class: "select2 fullwidth" %>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<div class="three columns">
|
38
|
+
<div class="field" data-hook="country-select">
|
39
|
+
<%= label_tag :q_country_iso_eq, Spree::Price.human_attribute_name(:country) %>
|
40
|
+
<%= f.select :country_iso_eq,
|
41
|
+
@prices.map(&:country).compact.uniq.map { |c| [c.name, c.iso]},
|
42
|
+
{include_blank: true},
|
43
|
+
class: "select2 fullwidth" %>
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
|
47
|
+
<div class="three columns">
|
48
|
+
<div class="field">
|
49
|
+
<%= label_tag :q_amount_gt, t(".amount_greater_than") %>
|
50
|
+
<%= f.text_field :amount_gt %>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
<div class="omega three columns">
|
55
|
+
<div class="field">
|
56
|
+
<%= label_tag :q_amount_lt, t(".amount_less_than") %>
|
57
|
+
<%= f.text_field :amount_lt %>
|
58
|
+
</div>
|
59
|
+
</div>
|
60
|
+
|
61
|
+
<div class="clearfix"></div>
|
62
|
+
|
63
|
+
<div class="actions filter-actions">
|
64
|
+
<div data-hook="admin_orders_index_search_buttons">
|
65
|
+
<%= button Spree.t(:filter_results), 'search' %>
|
66
|
+
</div>
|
67
|
+
</div>
|
68
|
+
|
69
|
+
<% end %>
|
70
|
+
</div>
|
71
|
+
<% end %>
|
72
|
+
|
73
|
+
<%= render 'table', prices: @prices %>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<%= form_for [:admin, @product, @product.prices.build] do |f| %>
|
2
|
+
<fieldset data-hook="admin_product_price_new_form">
|
3
|
+
<legend><%= t('.new_price') %></legend>
|
4
|
+
<%= render :partial => 'form', :locals => { :f => f } %>
|
5
|
+
<%= render :partial => 'spree/admin/shared/new_resource_links' %>
|
6
|
+
</fieldset>
|
7
|
+
<% end %>
|
@@ -27,14 +27,19 @@
|
|
27
27
|
</div>
|
28
28
|
|
29
29
|
<div class="right four columns omega" data-hook="admin_product_form_right">
|
30
|
-
<div data-hook="admin_product_form_price">
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
<div data-hook="admin_product_form_price" class="alpha omega four columns">
|
31
|
+
<%= f.field_container :price do %>
|
32
|
+
<%= f.label :price, class: 'required' %>
|
33
|
+
<%= f.text_field :price, :value => number_to_currency(@product.price, :unit => ''), :required => true %>
|
34
|
+
<%= f.error_message_on :price %>
|
35
|
+
<% end %>
|
36
36
|
</div>
|
37
37
|
|
38
|
+
<% if show_rebuild_vat_checkbox? %>
|
39
|
+
<%= render "spree/admin/shared/rebuild_vat_prices_checkbox", form: f, model_name: "product", wrapper_class: "alpha omega field four columns" %>
|
40
|
+
<div class="clearfix"></div>
|
41
|
+
<% end %>
|
42
|
+
|
38
43
|
<div data-hook="admin_product_form_cost_price" class="alpha two columns">
|
39
44
|
<%= f.field_container :cost_price do %>
|
40
45
|
<%= f.label :cost_price %>
|
@@ -49,7 +49,7 @@
|
|
49
49
|
</div>
|
50
50
|
|
51
51
|
<div class='row'>
|
52
|
-
<div data-hook="new_product_shipping_category" class="alpha four columns">
|
52
|
+
<div data-hook="new_product_shipping_category" class="alpha field four columns">
|
53
53
|
<%= f.field_container :shipping_category do %>
|
54
54
|
<%= f.label :shipping_category_id, Spree::ShippingCategory.
|
55
55
|
model_name.human, class: 'required' %><br />
|
@@ -57,6 +57,14 @@
|
|
57
57
|
<%= f.error_message_on :shipping_category_id %>
|
58
58
|
<% end %>
|
59
59
|
</div>
|
60
|
+
|
61
|
+
<div data-hook="new_product_tax_category" class="field four columns">
|
62
|
+
<%= f.field_container :tax_category do %>
|
63
|
+
<%= f.label :tax_category_id, Spree::TaxCategory.model_name.human %>
|
64
|
+
<%= f.collection_select(:tax_category_id, @tax_categories, :id, :name, { :include_blank => Spree.t('match_choices.none') }, { :class => 'select2 fullwidth' }) %>
|
65
|
+
<%= f.error_message_on :tax_category %>
|
66
|
+
<% end %>
|
67
|
+
</div>
|
60
68
|
</div>
|
61
69
|
|
62
70
|
<div class="clearfix" data-hook="product-from-prototype" id="product-from-prototype">
|
@@ -79,7 +79,7 @@
|
|
79
79
|
<thead data-hook="customer_return_header">
|
80
80
|
<tr>
|
81
81
|
<th><%= Spree.t(:description) %></th>
|
82
|
-
<th><%= Spree::
|
82
|
+
<th><%= Spree::Reimbursement::Credit.human_attribute_name(:amount) %></th>
|
83
83
|
</tr>
|
84
84
|
</thead>
|
85
85
|
<tbody>
|
@@ -3,7 +3,7 @@ node(:count) { @products.count }
|
|
3
3
|
node(:total_count) { @products.total_count }
|
4
4
|
node(:current_page) { params[:page] ? params[:page].to_i : 1 }
|
5
5
|
node(:per_page) { params[:per_page] || Kaminari.config.default_per_page }
|
6
|
-
node(:pages) { @products.
|
6
|
+
node(:pages) { @products.total_pages }
|
7
7
|
child(@products => :products) do
|
8
8
|
attributes :id, :name
|
9
9
|
end
|
@@ -14,6 +14,9 @@
|
|
14
14
|
<%= content_tag :li, :class => ('active' if current == 'Variants') do %>
|
15
15
|
<%= link_to_with_icon 'th-large', Spree::Variant.model_name.human(count: :other), spree.admin_product_variants_url(@product) %>
|
16
16
|
<% end if can?(:admin, Spree::Variant) %>
|
17
|
+
<%= content_tag :li, :class => ('active' if current == 'Prices') do %>
|
18
|
+
<%= link_to_with_icon 'money', Spree::Price.model_name.human(count: :other), spree.admin_product_prices_url(@product) %>
|
19
|
+
<% end if can?(:admin, Spree::Price) %>
|
17
20
|
<%= content_tag :li, :class => ('active' if current == 'Product Properties') do %>
|
18
21
|
<%= link_to_with_icon 'tasks', Spree::ProductProperty.model_name.human(count: :other), spree.admin_product_product_properties_url(@product) %>
|
19
22
|
<% end if can?(:admin, Spree::ProductProperty) %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div data-hook="admin_<%= model_name %>_form_generate_vat_prices" class="<%= wrapper_class %> checkbox">
|
2
|
+
<%= form.label :rebuild_vat_prices do %>
|
3
|
+
<%= form.check_box :rebuild_vat_prices, checked: form.object.prices.size <= 1 %>
|
4
|
+
<%= Spree::Variant.human_attribute_name(:rebuild_vat_prices) %>
|
5
|
+
<% end %>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<script type="text/javascript">
|
9
|
+
$('#<%= model_name %>_price').on('change', function(e) {
|
10
|
+
$('#<%= model_name %>_rebuild_vat_prices').prop('checked', true);
|
11
|
+
});
|
12
|
+
</script>
|
@@ -21,6 +21,6 @@
|
|
21
21
|
<% end %>
|
22
22
|
|
23
23
|
<% if can?(:display, Spree::ShippingMethod) || can?(:display, Spree::ShippingCategory) || can?(:display, Spree::StockLocation) %>
|
24
|
-
<%= tab :shipping, url: admin_shipping_methods_path %>
|
24
|
+
<%= tab :shipping, url: admin_shipping_methods_path, match_path: %r(shipping_methods|shipping_categories|stock_locations) %>
|
25
25
|
<% end %>
|
26
26
|
</ul>
|
@@ -25,7 +25,11 @@
|
|
25
25
|
<% end %>
|
26
26
|
|
27
27
|
<% if can? :admin, Spree::StockItem %>
|
28
|
-
<%= tab(
|
28
|
+
<%= tab(
|
29
|
+
*Spree::BackendConfiguration::STOCK_TABS,
|
30
|
+
url: spree.admin_stock_items_path,
|
31
|
+
label: :stock, icon: 'cubes',
|
32
|
+
match_path: %r(^/admin/stock(?!_locations))) do %>
|
29
33
|
<%- render partial: 'spree/admin/shared/stock_sub_menu' %>
|
30
34
|
<%- end %>
|
31
35
|
<% end %>
|
@@ -2,7 +2,8 @@
|
|
2
2
|
<%= link_to "#{Spree.t(:editing_user)} #{@user.email}", edit_admin_user_url(@user) %>
|
3
3
|
<% end %>
|
4
4
|
|
5
|
-
<%= render
|
5
|
+
<%= render 'spree/admin/users/sidebar' %>
|
6
|
+
<%= render 'spree/admin/users/tabs', current: :store_credits %>
|
6
7
|
<% content_for :page_actions do %>
|
7
8
|
<li><%= link_to_with_icon 'arrow-left', Spree.t("admin.store_credits.back_to_edit"), admin_user_store_credit_path(@user, @store_credit), class: 'button' %></li>
|
8
9
|
<% end %>
|
@@ -2,7 +2,8 @@
|
|
2
2
|
<%= link_to "#{Spree.t(:editing_user)} #{@user.email}", edit_admin_user_url(@user) %>
|
3
3
|
<% end %>
|
4
4
|
|
5
|
-
<%= render
|
5
|
+
<%= render 'spree/admin/users/sidebar' %>
|
6
|
+
<%= render 'spree/admin/users/tabs', current: :store_credits %>
|
6
7
|
<% content_for :page_actions do %>
|
7
8
|
<li><%= link_to_with_icon 'arrow-left', Spree.t("admin.store_credits.back_to_edit"), admin_user_store_credit_path(@user, @store_credit), class: 'button' %></li>
|
8
9
|
<% end %>
|
@@ -2,7 +2,8 @@
|
|
2
2
|
<%= link_to "#{Spree.t(:editing_user)} #{@user.email}", edit_admin_user_url(@user) %>
|
3
3
|
<% end %>
|
4
4
|
|
5
|
-
<%= render
|
5
|
+
<%= render 'spree/admin/users/sidebar' %>
|
6
|
+
<%= render 'spree/admin/users/tabs', current: :store_credits %>
|
6
7
|
<% content_for :page_actions do %>
|
7
8
|
<li><%= link_to_with_icon 'arrow-left', Spree.t("admin.store_credits.back_to_user_list"), admin_users_path, class: 'button' %></li>
|
8
9
|
<% if can?(:create, Spree::StoreCredit) %>
|
@@ -2,7 +2,8 @@
|
|
2
2
|
<%= link_to "#{Spree.t(:editing_user)} #{@user.email}", edit_admin_user_url(@user) %>
|
3
3
|
<% end %>
|
4
4
|
|
5
|
-
<%= render
|
5
|
+
<%= render 'spree/admin/users/sidebar' %>
|
6
|
+
<%= render 'spree/admin/users/tabs', current: :store_credits %>
|
6
7
|
<% content_for :page_actions do %>
|
7
8
|
<li><%= link_to_with_icon 'arrow-left', Spree.t("admin.store_credits.back_to_store_credit_list"), admin_user_store_credits_path(@user), class: 'button' %></li>
|
8
9
|
<% end %>
|
@@ -2,7 +2,8 @@
|
|
2
2
|
<%= link_to "#{Spree.t(:editing_user)} #{@user.email}", edit_admin_user_url(@user) %>
|
3
3
|
<% end %>
|
4
4
|
|
5
|
-
<%= render
|
5
|
+
<%= render 'spree/admin/users/sidebar' %>
|
6
|
+
<%= render 'spree/admin/users/tabs', current: :store_credits %>
|
6
7
|
<% content_for :page_actions do %>
|
7
8
|
<li><%= link_to_with_icon 'arrow-left', Spree.t("admin.store_credits.back_to_store_credit_list"), admin_user_store_credits_path(@user), class: 'button' %></li>
|
8
9
|
<% if @store_credit.editable? && can?(:edit, @store_credit) %>
|
@@ -1,37 +1,10 @@
|
|
1
1
|
<% content_for :sidebar_title do %>
|
2
|
-
<%= Spree.t(:
|
2
|
+
<%= Spree.t(:lifetime_stats) %>
|
3
3
|
<% end %>
|
4
4
|
|
5
5
|
<% content_for :sidebar do %>
|
6
6
|
<nav class="menu">
|
7
|
-
<
|
8
|
-
<li<%== ' class="active"' if current == :account %>>
|
9
|
-
<%= link_to_with_icon 'user', Spree.t(:"admin.user.account"), spree.edit_admin_user_path(@user) %>
|
10
|
-
</li>
|
11
|
-
<% if can?(:addresses, @user) %>
|
12
|
-
<li<%== ' class="active"' if current == :address %>>
|
13
|
-
<%= link_to_with_icon 'user', Spree.t(:"admin.user.addresses"), spree.addresses_admin_user_path(@user) %>
|
14
|
-
</li>
|
15
|
-
<% end %>
|
16
|
-
<% if can?(:orders, @user) %>
|
17
|
-
<li<%== ' class="active"' if current == :orders %>>
|
18
|
-
<%= link_to_with_icon 'shopping-cart', Spree.t(:"admin.user.orders"), spree.orders_admin_user_path(@user) %>
|
19
|
-
</li>
|
20
|
-
<% end %>
|
21
|
-
<% if can?(:items, @user) %>
|
22
|
-
<li<%== ' class="active"' if current == :items %>>
|
23
|
-
<%= link_to_with_icon 'edit', Spree.t(:"admin.user.items"), spree.items_admin_user_path(@user) %>
|
24
|
-
</li>
|
25
|
-
<% end %>
|
26
|
-
<% if can?(:display, Spree::StoreCredit) %>
|
27
|
-
<li<%== ' class="active"' if current == :store_credits %>>
|
28
|
-
<%= link_to_with_icon 'money', Spree.t(:"admin.user.store_credit"), spree.admin_user_store_credits_path(@user) %>
|
29
|
-
</li>
|
30
|
-
<% end %>
|
31
|
-
</ul>
|
32
|
-
|
33
|
-
<fieldset data-hook="admin_user_lifetime_stats">
|
34
|
-
<legend><%= Spree.t(:lifetime_stats) %></legend>
|
7
|
+
<fieldset class='no-border-top' data-hook="admin_user_lifetime_stats">
|
35
8
|
<dl id="user-lifetime-stats">
|
36
9
|
<dt><%= Spree.t(:total_sales) %>:</dt>
|
37
10
|
<dd><%= @user.display_lifetime_value.to_html %></dd>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<% content_for :tabs do %>
|
2
|
+
<nav>
|
3
|
+
<ul class='tabs' data-hook="admin_user_tab_options">
|
4
|
+
<li<%== ' class="active"' if current == :account %>>
|
5
|
+
<%= link_to_with_icon 'user', Spree.t(:"admin.user.account"), spree.edit_admin_user_path(@user) %>
|
6
|
+
</li>
|
7
|
+
<% if can?(:addresses, @user) %>
|
8
|
+
<li<%== ' class="active"' if current == :address %>>
|
9
|
+
<%= link_to_with_icon 'user', Spree.t(:"admin.user.addresses"), spree.addresses_admin_user_path(@user) %>
|
10
|
+
</li>
|
11
|
+
<% end %>
|
12
|
+
<% if can?(:orders, @user) %>
|
13
|
+
<li<%== ' class="active"' if current == :orders %>>
|
14
|
+
<%= link_to_with_icon 'shopping-cart', Spree.t(:"admin.user.order_history"), spree.orders_admin_user_path(@user) %>
|
15
|
+
</li>
|
16
|
+
<% end %>
|
17
|
+
<% if can?(:items, @user) %>
|
18
|
+
<li<%== ' class="active"' if current == :items %>>
|
19
|
+
<%= link_to_with_icon 'edit', Spree.t(:"admin.user.items"), spree.items_admin_user_path(@user) %>
|
20
|
+
</li>
|
21
|
+
<% end %>
|
22
|
+
<% if can?(:display, Spree::StoreCredit) %>
|
23
|
+
<li<%== ' class="active"' if current == :store_credits %>>
|
24
|
+
<%= link_to_with_icon 'money', Spree.t(:"admin.user.store_credit"), spree.admin_user_store_credits_path(@user) %>
|
25
|
+
</li>
|
26
|
+
<% end %>
|
27
|
+
</ul>
|
28
|
+
</nav>
|
29
|
+
<% end %>
|
@@ -2,7 +2,8 @@
|
|
2
2
|
<%= link_to "#{Spree.t(:editing_user)} #{@user.email}", edit_admin_user_url(@user) %>
|
3
3
|
<% end %>
|
4
4
|
|
5
|
-
<%= render
|
5
|
+
<%= render 'spree/admin/users/sidebar' %>
|
6
|
+
<%= render 'spree/admin/users/tabs', current: :address %>
|
6
7
|
<%= render :partial => 'spree/admin/users/user_page_actions' %>
|
7
8
|
|
8
9
|
<fieldset data-hook="admin_user_addresses" id="admin_user_edit_addresses" class="alpha twelve columns">
|
@@ -2,7 +2,8 @@
|
|
2
2
|
<%= link_to "#{Spree.t(:editing_user)} #{@user.email}", edit_admin_user_url(@user) %>
|
3
3
|
<% end %>
|
4
4
|
|
5
|
-
<%= render
|
5
|
+
<%= render 'spree/admin/users/sidebar' %>
|
6
|
+
<%= render 'spree/admin/users/tabs', current: :account %>
|
6
7
|
<%= render :partial => 'spree/admin/users/user_page_actions' %>
|
7
8
|
|
8
9
|
<fieldset data-hook="admin_user_edit_general_settings" class="alpha twelve columns">
|
@@ -2,7 +2,8 @@
|
|
2
2
|
<%= link_to "#{Spree.t(:"admin.user.items_purchased")} #{@user.email}", edit_admin_user_url(@user) %>
|
3
3
|
<% end %>
|
4
4
|
|
5
|
-
<%= render
|
5
|
+
<%= render 'spree/admin/users/sidebar' %>
|
6
|
+
<%= render 'spree/admin/users/tabs', current: :items %>
|
6
7
|
<%= render :partial => 'spree/admin/users/user_page_actions' %>
|
7
8
|
|
8
9
|
<fieldset data-hook="admin_user_items_purchased" class="alpha twelve columns">
|
@@ -2,7 +2,8 @@
|
|
2
2
|
<%= link_to "#{Spree.t(:"admin.user.order_history")} #{@user.email}", edit_admin_user_url(@user) %>
|
3
3
|
<% end %>
|
4
4
|
|
5
|
-
<%= render
|
5
|
+
<%= render 'spree/admin/users/sidebar' %>
|
6
|
+
<%= render 'spree/admin/users/tabs', current: :orders %>
|
6
7
|
<%= render :partial => 'spree/admin/users/user_page_actions' %>
|
7
8
|
|
8
9
|
<fieldset data-hook="admin_user_order_history" class="alpha twelve columns">
|
@@ -53,6 +53,10 @@
|
|
53
53
|
<%= f.text_field :price, :value => number_to_currency(@variant.price, :unit => ''), :class => 'fullwidth' %>
|
54
54
|
</div>
|
55
55
|
|
56
|
+
<% if show_rebuild_vat_checkbox? %>
|
57
|
+
<%= render "spree/admin/shared/rebuild_vat_prices_checkbox", form: f, model_name: "variant", wrapper_class: "field four columns" %>
|
58
|
+
<% end %>
|
59
|
+
|
56
60
|
<div class="field four columns" data-hook="cost_price">
|
57
61
|
<%= f.label :cost_price %>
|
58
62
|
<%= f.text_field :cost_price, :value => number_to_currency(@variant.cost_price, :unit => ''), :class => 'fullwidth' %>
|
data/config/routes.rb
CHANGED
@@ -50,6 +50,7 @@ Spree::Core::Engine.add_routes do
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
resources :variants_including_master, only: [:update]
|
53
|
+
resources :prices, only: [:destroy, :index, :edit, :update, :new, :create]
|
53
54
|
end
|
54
55
|
get '/products/:product_slug/stock', to: "stock_items#index", as: :product_stock
|
55
56
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spree::Admin::PricesController do
|
4
|
+
stub_authorization!
|
5
|
+
|
6
|
+
let!(:product) { create(:product) }
|
7
|
+
|
8
|
+
describe '#index' do
|
9
|
+
context "when only given a product" do
|
10
|
+
let(:product) { create(:product) }
|
11
|
+
|
12
|
+
subject { spree_get :index, product_id: product.slug }
|
13
|
+
|
14
|
+
it { is_expected.to be_success }
|
15
|
+
|
16
|
+
it 'assigns usable instance variables' do
|
17
|
+
subject
|
18
|
+
expect(assigns(:search)).to be_a(Ransack::Search)
|
19
|
+
expect(assigns(:prices)).to eq(product.prices)
|
20
|
+
expect(assigns(:product)).to eq(product)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "when given a product and a variant" do
|
25
|
+
let(:variant) { create(:variant) }
|
26
|
+
let(:product) { variant.product }
|
27
|
+
|
28
|
+
subject { spree_get :index, product_id: product.slug, variant_id: variant.id }
|
29
|
+
|
30
|
+
it { is_expected.to be_success }
|
31
|
+
|
32
|
+
it 'assigns usable instance variables' do
|
33
|
+
subject
|
34
|
+
expect(assigns(:search)).to be_a(Ransack::Search)
|
35
|
+
expect(assigns(:prices)).to eq(product.prices)
|
36
|
+
expect(assigns(:prices)).to include(variant.default_price)
|
37
|
+
expect(assigns(:product)).to eq(product)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -97,6 +97,18 @@ module Spree
|
|
97
97
|
expect(assigns(:stock_transfer).created_by).to eq(user)
|
98
98
|
end
|
99
99
|
end
|
100
|
+
|
101
|
+
# Regression spec for Solidus issue #1087
|
102
|
+
context "missing source_stock_location parameter" do
|
103
|
+
subject do
|
104
|
+
spree_post :create, stock_transfer: { source_location_id: nil, description: nil }
|
105
|
+
end
|
106
|
+
|
107
|
+
it "sets a flash error" do
|
108
|
+
subject
|
109
|
+
expect(flash[:error]).to eq assigns(:stock_transfer).errors.full_messages.join(', ')
|
110
|
+
end
|
111
|
+
end
|
100
112
|
end
|
101
113
|
|
102
114
|
context "#receive" do
|
@@ -223,4 +223,25 @@ describe 'Payments', type: :feature do
|
|
223
223
|
end
|
224
224
|
end
|
225
225
|
end
|
226
|
+
|
227
|
+
# Previously this would fail unless the method was named "Credit Card"
|
228
|
+
context "with an differently named payment method" do
|
229
|
+
let(:order) { create(:order_with_line_items, line_items_count: 1) }
|
230
|
+
let!(:chequing_payment_method) { create(:check_payment_method) }
|
231
|
+
let!(:payment_method) { create(:credit_card_payment_method, name: "Multipass!") }
|
232
|
+
|
233
|
+
before do
|
234
|
+
visit spree.admin_order_payments_path(order.reload)
|
235
|
+
end
|
236
|
+
|
237
|
+
it "is able to create a new payment", js: true do
|
238
|
+
choose payment_method.name
|
239
|
+
fill_in "Card Number", with: "4111 1111 1111 1111"
|
240
|
+
fill_in "Name", with: "Test User"
|
241
|
+
fill_in "Expiration", with: "09 / #{Time.current.year + 1}"
|
242
|
+
fill_in "Card Code", with: "007"
|
243
|
+
click_button "Continue"
|
244
|
+
expect(page).to have_content("Payment has been successfully created!")
|
245
|
+
end
|
246
|
+
end
|
226
247
|
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Pricing' do
|
4
|
+
stub_authorization!
|
5
|
+
|
6
|
+
let(:product) { create(:product) }
|
7
|
+
|
8
|
+
before do
|
9
|
+
visit spree.edit_admin_product_path(product)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'has a Prices tab' do
|
13
|
+
within(".tabs") do
|
14
|
+
expect(page).to have_link("Prices")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "in the prices tab" do
|
19
|
+
let!(:country) { create :country, iso: "DE" }
|
20
|
+
let(:master_price) { product.master.default_price }
|
21
|
+
let!(:other_price) { product.master.prices.create(amount: 34.56, currency: "RUB", country_iso: "DE") }
|
22
|
+
|
23
|
+
before do
|
24
|
+
visit spree.admin_product_prices_path(product)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'displays a table with the prices' do
|
28
|
+
expect(page).to have_content(product.name)
|
29
|
+
within(".tabs .active") do
|
30
|
+
expect(page).to have_content("Prices")
|
31
|
+
end
|
32
|
+
|
33
|
+
within('table.prices') do
|
34
|
+
expect(page).to have_content("$19.99")
|
35
|
+
expect(page).to have_content("USD")
|
36
|
+
expect(page).to have_content("34.56 ₽")
|
37
|
+
expect(page).to have_content("RUB")
|
38
|
+
expect(page).to have_content("Master")
|
39
|
+
expect(page).to have_content("Any Country")
|
40
|
+
expect(page).to have_content("Germany")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "searching" do
|
45
|
+
let(:variant) { create(:variant, price: 20) }
|
46
|
+
let(:product) { variant.product }
|
47
|
+
|
48
|
+
before do
|
49
|
+
product.master.update(price: 49.99)
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'has a working table filter' do
|
53
|
+
expect(page).to have_selector("#table-filter")
|
54
|
+
within "#table-filter" do
|
55
|
+
within "fieldset legend" do
|
56
|
+
expect(page).to have_content("Search")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
select variant.options_text, from: "q_variant_id_eq"
|
60
|
+
click_button "Filter Results"
|
61
|
+
expect(page).to have_content("20")
|
62
|
+
expect(page).to_not have_content("49.99")
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context "deleting", js: true do
|
67
|
+
let(:product) { create(:product, price: 65.43) }
|
68
|
+
let!(:variant) { product.master }
|
69
|
+
let!(:other_price) { product.master.prices.create(amount: 34.56, currency: "EUR") }
|
70
|
+
|
71
|
+
it "will delete the non-default price" do
|
72
|
+
within "#spree_price_#{other_price.id}" do
|
73
|
+
accept_alert do
|
74
|
+
click_icon :trash
|
75
|
+
end
|
76
|
+
end
|
77
|
+
expect(page).to have_content("Price has been successfully removed")
|
78
|
+
end
|
79
|
+
|
80
|
+
it "does not break when default price is deleted" do
|
81
|
+
within "#spree_price_#{variant.default_price.id}" do
|
82
|
+
accept_alert do
|
83
|
+
click_icon :trash
|
84
|
+
end
|
85
|
+
end
|
86
|
+
expect(page).to have_content("Price has been successfully removed")
|
87
|
+
visit spree.admin_products_path
|
88
|
+
expect(page).to have_selector("#spree_product_#{product.id}")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Promotions', type: :feature do
|
4
|
+
stub_authorization!
|
5
|
+
let!(:reimbursement) { create(:reimbursement) }
|
6
|
+
|
7
|
+
it "should display the reimbursements table" do
|
8
|
+
visit spree.admin_order_reimbursement_path(reimbursement.order, reimbursement)
|
9
|
+
expect(page).to have_css('table thead tr th', text: 'Product')
|
10
|
+
expect(page).to have_css('table thead tr th', text: 'Preferred Reimbursement Type')
|
11
|
+
expect(page).to have_css('table thead tr th', text: 'Reimbursement Type Override')
|
12
|
+
expect(page).to have_css('table thead tr th', text: 'Exchange for')
|
13
|
+
expect(page).to have_css('table thead tr th', text: 'Amount Before Sales Tax')
|
14
|
+
expect(page).to have_css('table thead tr th', text: 'Total')
|
15
|
+
end
|
16
|
+
end
|
@@ -30,6 +30,17 @@ describe 'Stock Transfers', type: :feature, js: true do
|
|
30
30
|
expect(page).to have_content('Stock Transfer has been successfully updated')
|
31
31
|
expect(page).to have_content("NY")
|
32
32
|
end
|
33
|
+
|
34
|
+
# Regression spec for Solidus issue #1087
|
35
|
+
it 'displays an error if no source location is selected' do
|
36
|
+
create(:stock_location_with_items, name: 'NY')
|
37
|
+
create(:stock_location, name: 'SF')
|
38
|
+
visit spree.new_admin_stock_transfer_path
|
39
|
+
fill_in 'stock_transfer_description', with: description
|
40
|
+
click_button 'Continue'
|
41
|
+
|
42
|
+
expect(page).to have_content("Source location can't be blank")
|
43
|
+
end
|
33
44
|
end
|
34
45
|
|
35
46
|
describe 'view a stock transfer' do
|
@@ -41,7 +41,7 @@ describe 'Users', type: :feature do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'can navigate to the order history' do
|
44
|
-
expect(page).to have_link Spree.t(:"admin.user.
|
44
|
+
expect(page).to have_link Spree.t(:"admin.user.order_history"), href: spree.orders_admin_user_path(user_a)
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'can navigate to the items purchased' do
|
@@ -201,7 +201,7 @@ describe 'Users', type: :feature do
|
|
201
201
|
before do
|
202
202
|
orders
|
203
203
|
click_link user_a.email
|
204
|
-
within("
|
204
|
+
within(".tabs") { click_link Spree.t(:"admin.user.order_history") }
|
205
205
|
end
|
206
206
|
|
207
207
|
it_behaves_like 'a user page'
|
@@ -231,7 +231,7 @@ describe 'Users', type: :feature do
|
|
231
231
|
before do
|
232
232
|
orders
|
233
233
|
click_link user_a.email
|
234
|
-
within("
|
234
|
+
within(".tabs") { click_link Spree.t(:"admin.user.items") }
|
235
235
|
end
|
236
236
|
|
237
237
|
it_behaves_like 'a user page'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_backend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.0.
|
4
|
+
version: 1.3.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Solidus Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: solidus_api
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.3.0.
|
19
|
+
version: 1.3.0.rc1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.3.0.
|
26
|
+
version: 1.3.0.rc1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: solidus_core
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.3.0.
|
33
|
+
version: 1.3.0.rc1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.3.0.
|
40
|
+
version: 1.3.0.rc1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sass-rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -300,6 +300,7 @@ files:
|
|
300
300
|
- app/controllers/spree/admin/orders_controller.rb
|
301
301
|
- app/controllers/spree/admin/payment_methods_controller.rb
|
302
302
|
- app/controllers/spree/admin/payments_controller.rb
|
303
|
+
- app/controllers/spree/admin/prices_controller.rb
|
303
304
|
- app/controllers/spree/admin/product_properties_controller.rb
|
304
305
|
- app/controllers/spree/admin/products_controller.rb
|
305
306
|
- app/controllers/spree/admin/promotion_actions_controller.rb
|
@@ -440,6 +441,12 @@ files:
|
|
440
441
|
- app/views/spree/admin/payments/source_views/_check.html.erb
|
441
442
|
- app/views/spree/admin/payments/source_views/_gateway.html.erb
|
442
443
|
- app/views/spree/admin/payments/source_views/_storecredit.html.erb
|
444
|
+
- app/views/spree/admin/prices/_form.html.erb
|
445
|
+
- app/views/spree/admin/prices/_table.html.erb
|
446
|
+
- app/views/spree/admin/prices/edit.html.erb
|
447
|
+
- app/views/spree/admin/prices/index.html.erb
|
448
|
+
- app/views/spree/admin/prices/new.html.erb
|
449
|
+
- app/views/spree/admin/prices/new.js.erb
|
443
450
|
- app/views/spree/admin/product_properties/_product_property_fields.html.erb
|
444
451
|
- app/views/spree/admin/product_properties/index.html.erb
|
445
452
|
- app/views/spree/admin/products/_form.html.erb
|
@@ -547,6 +554,7 @@ files:
|
|
547
554
|
- app/views/spree/admin/shared/_product_sub_menu.html.erb
|
548
555
|
- app/views/spree/admin/shared/_product_tabs.html.erb
|
549
556
|
- app/views/spree/admin/shared/_promotion_sub_menu.html.erb
|
557
|
+
- app/views/spree/admin/shared/_rebuild_vat_prices_checkbox.html.erb
|
550
558
|
- app/views/spree/admin/shared/_refunds.html.erb
|
551
559
|
- app/views/spree/admin/shared/_report_criteria.html.erb
|
552
560
|
- app/views/spree/admin/shared/_report_order_criteria.html.erb
|
@@ -647,6 +655,7 @@ files:
|
|
647
655
|
- app/views/spree/admin/users/_addresses_form.html.erb
|
648
656
|
- app/views/spree/admin/users/_form.html.erb
|
649
657
|
- app/views/spree/admin/users/_sidebar.html.erb
|
658
|
+
- app/views/spree/admin/users/_tabs.html.erb
|
650
659
|
- app/views/spree/admin/users/_user_page_actions.html.erb
|
651
660
|
- app/views/spree/admin/users/addresses.html.erb
|
652
661
|
- app/views/spree/admin/users/edit.html.erb
|
@@ -690,6 +699,7 @@ files:
|
|
690
699
|
- spec/controllers/spree/admin/orders_controller_spec.rb
|
691
700
|
- spec/controllers/spree/admin/payment_methods_controller_spec.rb
|
692
701
|
- spec/controllers/spree/admin/payments_controller_spec.rb
|
702
|
+
- spec/controllers/spree/admin/prices_controller_spec.rb
|
693
703
|
- spec/controllers/spree/admin/product_properties_controller_spec.rb
|
694
704
|
- spec/controllers/spree/admin/products_controller_spec.rb
|
695
705
|
- spec/controllers/spree/admin/promotion_actions_controller_spec.rb
|
@@ -743,6 +753,7 @@ files:
|
|
743
753
|
- spec/features/admin/products/edit/taxons_spec.rb
|
744
754
|
- spec/features/admin/products/edit/variants_spec.rb
|
745
755
|
- spec/features/admin/products/option_types_spec.rb
|
756
|
+
- spec/features/admin/products/pricing_spec.rb
|
746
757
|
- spec/features/admin/products/products_spec.rb
|
747
758
|
- spec/features/admin/products/properties_spec.rb
|
748
759
|
- spec/features/admin/products/prototypes_spec.rb
|
@@ -752,6 +763,7 @@ files:
|
|
752
763
|
- spec/features/admin/promotions/option_value_rule_spec.rb
|
753
764
|
- spec/features/admin/promotions/tiered_calculator_spec.rb
|
754
765
|
- spec/features/admin/promotions/user_rule_spec.rb
|
766
|
+
- spec/features/admin/reimbursements_spec.rb
|
755
767
|
- spec/features/admin/reports_spec.rb
|
756
768
|
- spec/features/admin/stock_transfer_spec.rb
|
757
769
|
- spec/features/admin/store_credits_spec.rb
|