shoppe 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/shoppe/table-tear-off.png +0 -0
  3. data/app/assets/javascripts/shoppe/application.coffee +2 -2
  4. data/app/assets/stylesheets/shoppe/application.scss +80 -37
  5. data/app/assets/stylesheets/shoppe/elements.scss +1 -2
  6. data/app/controllers/shoppe/attachments_controller.rb +3 -3
  7. data/app/controllers/shoppe/countries_controller.rb +13 -13
  8. data/app/controllers/shoppe/delivery_service_prices_controller.rb +11 -11
  9. data/app/controllers/shoppe/delivery_services_controller.rb +13 -13
  10. data/app/controllers/shoppe/orders_controller.rb +20 -20
  11. data/app/controllers/shoppe/payments_controller.rb +8 -8
  12. data/app/controllers/shoppe/product_categories_controller.rb +13 -13
  13. data/app/controllers/shoppe/products_controller.rb +24 -13
  14. data/app/controllers/shoppe/sessions_controller.rb +7 -7
  15. data/app/controllers/shoppe/settings_controller.rb +6 -6
  16. data/app/controllers/shoppe/stock_level_adjustments_controller.rb +5 -5
  17. data/app/controllers/shoppe/tax_rates_controller.rb +13 -13
  18. data/app/controllers/shoppe/users_controller.rb +15 -15
  19. data/app/controllers/shoppe/variants_controller.rb +13 -13
  20. data/app/helpers/shoppe/application_helper.rb +12 -12
  21. data/app/models/shoppe/order/actions.rb +17 -3
  22. data/app/models/shoppe/order/billing.rb +18 -18
  23. data/app/models/shoppe/order/delivery.rb +30 -31
  24. data/app/models/shoppe/order_item.rb +33 -34
  25. data/app/models/shoppe/payment.rb +15 -15
  26. data/app/models/shoppe/product.rb +82 -21
  27. data/app/models/shoppe/product/variants.rb +10 -10
  28. data/app/models/shoppe/product_category.rb +7 -7
  29. data/app/models/shoppe/stock_level_adjustment.rb +6 -6
  30. data/app/validators/permalink_validator.rb +7 -0
  31. data/app/views/layouts/shoppe/application.html.haml +10 -20
  32. data/app/views/shoppe/countries/_form.html.haml +15 -11
  33. data/app/views/shoppe/countries/edit.html.haml +5 -4
  34. data/app/views/shoppe/countries/index.html.haml +9 -9
  35. data/app/views/shoppe/countries/new.html.haml +6 -4
  36. data/app/views/shoppe/delivery_service_prices/_form.html.haml +16 -16
  37. data/app/views/shoppe/delivery_service_prices/edit.html.haml +5 -4
  38. data/app/views/shoppe/delivery_service_prices/index.html.haml +8 -9
  39. data/app/views/shoppe/delivery_service_prices/new.html.haml +5 -4
  40. data/app/views/shoppe/delivery_services/_form.html.haml +15 -14
  41. data/app/views/shoppe/delivery_services/edit.html.haml +7 -5
  42. data/app/views/shoppe/delivery_services/index.html.haml +11 -12
  43. data/app/views/shoppe/delivery_services/new.html.haml +5 -4
  44. data/app/views/shoppe/orders/_form.html.haml +19 -19
  45. data/app/views/shoppe/orders/_order_details.html.haml +20 -15
  46. data/app/views/shoppe/orders/_order_items.html.haml +6 -6
  47. data/app/views/shoppe/orders/_order_items_form.html.haml +11 -11
  48. data/app/views/shoppe/orders/_payments_form.html.haml +4 -4
  49. data/app/views/shoppe/orders/_payments_table.html.haml +12 -12
  50. data/app/views/shoppe/orders/_search_form.html.haml +10 -10
  51. data/app/views/shoppe/orders/_status_bar.html.haml +17 -13
  52. data/app/views/shoppe/orders/despatch_note.html.haml +15 -15
  53. data/app/views/shoppe/orders/edit.html.haml +8 -8
  54. data/app/views/shoppe/orders/index.html.haml +12 -12
  55. data/app/views/shoppe/orders/new.html.haml +7 -7
  56. data/app/views/shoppe/orders/show.html.haml +9 -12
  57. data/app/views/shoppe/payments/refund.html.haml +6 -7
  58. data/app/views/shoppe/product_categories/_form.html.haml +9 -9
  59. data/app/views/shoppe/product_categories/edit.html.haml +4 -4
  60. data/app/views/shoppe/product_categories/index.html.haml +5 -5
  61. data/app/views/shoppe/product_categories/new.html.haml +4 -3
  62. data/app/views/shoppe/products/_form.html.haml +49 -50
  63. data/app/views/shoppe/products/_table.html.haml +10 -10
  64. data/app/views/shoppe/products/edit.html.haml +6 -6
  65. data/app/views/shoppe/products/import.html.haml +63 -0
  66. data/app/views/shoppe/products/index.html.haml +6 -4
  67. data/app/views/shoppe/products/new.html.haml +6 -4
  68. data/app/views/shoppe/sessions/new.html.haml +5 -5
  69. data/app/views/shoppe/sessions/reset.html.haml +6 -5
  70. data/app/views/shoppe/settings/edit.html.haml +5 -5
  71. data/app/views/shoppe/shared/error.html.haml +3 -3
  72. data/app/views/shoppe/stock_level_adjustments/index.html.haml +13 -12
  73. data/app/views/shoppe/tax_rates/form.html.haml +13 -13
  74. data/app/views/shoppe/tax_rates/index.html.haml +5 -5
  75. data/app/views/shoppe/users/_form.html.haml +10 -11
  76. data/app/views/shoppe/users/edit.html.haml +4 -4
  77. data/app/views/shoppe/users/index.html.haml +5 -5
  78. data/app/views/shoppe/users/new.html.haml +6 -4
  79. data/app/views/shoppe/variants/form.html.haml +27 -29
  80. data/app/views/shoppe/variants/index.html.haml +11 -11
  81. data/config/locales/en.yml +619 -14
  82. data/config/locales/es.yml +650 -0
  83. data/config/locales/pl.yml +650 -0
  84. data/config/locales/pt-BR.yml +643 -0
  85. data/config/routes.rb +16 -8
  86. data/db/migrate/20141026175622_add_indexes_to_shoppe_order_items.rb +6 -0
  87. data/db/migrate/20141026175943_add_indexes_to_shoppe_orders.rb +7 -0
  88. data/db/migrate/20141026180333_add_indexes_to_shoppe_payments.rb +6 -0
  89. data/db/migrate/20141026180835_add_indexes_to_shoppe_product_attributes.rb +7 -0
  90. data/db/migrate/20141026180952_add_indexes_to_shoppe_product_categories.rb +5 -0
  91. data/db/migrate/20141026181040_add_indexes_to_shoppe_products.rb +8 -0
  92. data/db/migrate/20141026181312_add_indexes_to_shoppe_settings.rb +5 -0
  93. data/db/migrate/20141026181354_add_indexes_to_shoppe_stock_level_adjustments.rb +6 -0
  94. data/db/migrate/20141026181559_add_indexes_to_shoppe_users.rb +5 -0
  95. data/db/migrate/20141026181716_add_indexes_to_shoppe_delivery_services.rb +9 -0
  96. data/db/schema.rb +36 -1
  97. data/lib/shoppe/engine.rb +6 -0
  98. data/lib/shoppe/navigation_manager.rb +1 -1
  99. data/lib/shoppe/version.rb +1 -1
  100. metadata +67 -5
@@ -1,47 +1,47 @@
1
1
  module Shoppe
2
2
  class DeliveryServicesController < Shoppe::ApplicationController
3
-
3
+
4
4
  before_filter { @active_nav = :delivery_services }
5
5
  before_filter { params[:id] && @delivery_service = Shoppe::DeliveryService.find(params[:id]) }
6
-
6
+
7
7
  def index
8
8
  @delivery_services = Shoppe::DeliveryService.all
9
9
  end
10
-
10
+
11
11
  def new
12
12
  @delivery_service = Shoppe::DeliveryService.new
13
13
  end
14
-
14
+
15
15
  def create
16
16
  @delivery_service = Shoppe::DeliveryService.new(safe_params)
17
17
  if @delivery_service.save
18
- redirect_to :delivery_services, :flash => {:notice => "Delivery Service has been created successfully"}
18
+ redirect_to :delivery_services, :flash => {:notice => t('shoppe.delivery_services.create_notice')}
19
19
  else
20
20
  render :action => "new"
21
21
  end
22
22
  end
23
-
23
+
24
24
  def edit
25
25
  end
26
-
26
+
27
27
  def update
28
28
  if @delivery_service.update(safe_params)
29
- redirect_to [:edit, @delivery_service], :flash => {:notice => "Delivery Service has been updated successfully"}
29
+ redirect_to [:edit, @delivery_service], :flash => {:notice => t('shoppe.delivery_services.update_notice')}
30
30
  else
31
31
  render :action => "edit"
32
32
  end
33
33
  end
34
-
34
+
35
35
  def destroy
36
36
  @delivery_service.destroy
37
- redirect_to :delivery_services, :flash => {:notice => "Delivery Service has been removed successfully"}
37
+ redirect_to :delivery_services, :flash => {:notice =>t('shoppe.delivery_services.destroy_notice')}
38
38
  end
39
-
39
+
40
40
  private
41
-
41
+
42
42
  def safe_params
43
43
  params[:delivery_service].permit(:name, :code, :active, :default, :courier, :tracking_url)
44
44
  end
45
-
45
+
46
46
  end
47
47
  end
@@ -1,79 +1,79 @@
1
1
  module Shoppe
2
2
  class OrdersController < Shoppe::ApplicationController
3
-
4
- before_filter { @active_nav = :orders }
3
+
4
+ before_filter { @active_nav = :orders }
5
5
  before_filter { params[:id] && @order = Shoppe::Order.find(params[:id])}
6
-
6
+
7
7
  def index
8
8
  @query = Shoppe::Order.ordered.received.includes(:order_items => :ordered_item).page(params[:page]).search(params[:q])
9
9
  @orders = @query.result
10
10
  end
11
-
11
+
12
12
  def new
13
13
  @order = Shoppe::Order.new
14
14
  @order.order_items.build(:ordered_item_type => 'Shoppe::Product')
15
15
  end
16
-
16
+
17
17
  def create
18
18
  Shoppe::Order.transaction do
19
19
  @order = Shoppe::Order.new(safe_params)
20
20
  @order.status = 'confirming'
21
21
  if !request.xhr? && @order.save
22
22
  @order.confirm!
23
- redirect_to @order, :notice => "Order has been created successfully"
23
+ redirect_to @order, :notice => t('shoppe.orders.create_notice')
24
24
  else
25
25
  @order.order_items.build(:ordered_item_type => 'Shoppe::Product')
26
26
  render :action => "new"
27
27
  end
28
28
  end
29
29
  rescue Shoppe::Errors::InsufficientStockToFulfil => e
30
- flash.now[:alert] = "Insufficient stock to order #{e.out_of_stock_items.map { |t| t.ordered_item.full_name }.to_sentence}. Quantities have been updated to max total stock available."
30
+ flash.now[:alert] = t('shoppe.orders.insufficient_stock_order', out_of_stock_items: e.out_of_stock_items.map { |t| t.ordered_item.full_name }.to_sentence)
31
31
  render :action => 'new'
32
32
  end
33
-
33
+
34
34
  def show
35
35
  @payments = @order.payments.to_a
36
36
  end
37
-
37
+
38
38
  def update
39
39
  @order.attributes = safe_params
40
40
  if !request.xhr? && @order.update_attributes(safe_params)
41
- redirect_to @order, :notice => "Order has been saved successfully"
41
+ redirect_to @order, :notice => t('shoppe.orders.update_notice')
42
42
  else
43
43
  render :action => "edit"
44
44
  end
45
45
  end
46
-
46
+
47
47
  def search
48
48
  index
49
49
  render :action => "index"
50
50
  end
51
-
51
+
52
52
  def accept
53
53
  @order.accept!(current_user)
54
- redirect_to @order, :notice => "Order has been accepted successfully"
54
+ redirect_to @order, :notice => t('shoppe.orders.accept_notice')
55
55
  rescue Shoppe::Errors::PaymentDeclined => e
56
56
  redirect_to @order, :alert => e.message
57
57
  end
58
-
58
+
59
59
  def reject
60
60
  @order.reject!(current_user)
61
- redirect_to @order, :notice => "Order has been rejected successfully"
61
+ redirect_to @order, :notice => t('shoppe.orders.reject_notice')
62
62
  rescue Shoppe::Errors::PaymentDeclined => e
63
63
  redirect_to @order, :alert => e.message
64
64
  end
65
-
65
+
66
66
  def ship
67
67
  @order.ship!(params[:consignment_number], current_user)
68
- redirect_to @order, :notice => "Order has been shipped successfully"
68
+ redirect_to @order, :notice => t('shoppe.orders.ship_notice')
69
69
  end
70
-
70
+
71
71
  def despatch_note
72
72
  render :layout => 'shoppe/printable'
73
73
  end
74
-
74
+
75
75
  private
76
-
76
+
77
77
  def safe_params
78
78
  params[:order].permit(
79
79
  :first_name, :last_name, :company,
@@ -1,33 +1,33 @@
1
1
  module Shoppe
2
2
  class PaymentsController < ApplicationController
3
-
3
+
4
4
  before_filter { @order = Shoppe::Order.find(params[:order_id]) }
5
5
  before_filter { params[:id] && @payment = @order.payments.find(params[:id]) }
6
-
6
+
7
7
  def create
8
8
  payment = @order.payments.build(params[:payment].permit(:amount, :method, :reference))
9
9
  if payment.save
10
- redirect_to @order, :notice => "Payment has been added successfully"
10
+ redirect_to @order, :notice => t('shoppe.payments.create_notice')
11
11
  else
12
12
  redirect_to @order, :alert => payment.errors.full_messages.to_sentence
13
13
  end
14
14
  end
15
-
15
+
16
16
  def destroy
17
17
  @payment.destroy
18
- redirect_to @order, :notice => "Payment has been removed successfully"
18
+ redirect_to @order, :notice => t('shoppe.payments.destroy_notice')
19
19
  end
20
-
20
+
21
21
  def refund
22
22
  if request.post?
23
23
  @payment.refund!(params[:amount])
24
- redirect_to @order, :notice => "Refund has been processed successfully."
24
+ redirect_to @order, :notice => t('shoppe.payments.refund_notice')
25
25
  else
26
26
  render :layout => false
27
27
  end
28
28
  rescue Shoppe::Errors::RefundFailed => e
29
29
  redirect_to @order, :alert => e.message
30
30
  end
31
-
31
+
32
32
  end
33
33
  end
@@ -1,47 +1,47 @@
1
1
  module Shoppe
2
2
  class ProductCategoriesController < Shoppe::ApplicationController
3
3
 
4
- before_filter { @active_nav = :product_categories }
4
+ before_filter { @active_nav = :product_categories }
5
5
  before_filter { params[:id] && @product_category = Shoppe::ProductCategory.find(params[:id]) }
6
-
6
+
7
7
  def index
8
8
  @product_categories = Shoppe::ProductCategory.ordered.all
9
9
  end
10
-
10
+
11
11
  def new
12
12
  @product_category = Shoppe::ProductCategory.new
13
13
  end
14
-
14
+
15
15
  def create
16
16
  @product_category = Shoppe::ProductCategory.new(safe_params)
17
17
  if @product_category.save
18
- redirect_to :product_categories, :flash => {:notice => "Category has been created successfully"}
18
+ redirect_to :product_categories, :flash => { :notice => t('shoppe.product_category.create_notice') }
19
19
  else
20
20
  render :action => "new"
21
21
  end
22
22
  end
23
-
23
+
24
24
  def edit
25
25
  end
26
-
26
+
27
27
  def update
28
28
  if @product_category.update(safe_params)
29
- redirect_to [:edit, @product_category], :flash => {:notice => "Category has been updated successfully"}
29
+ redirect_to [:edit, @product_category], :flash => { :notice => t('shoppe.product_category.update_notice') }
30
30
  else
31
31
  render :action => "edit"
32
32
  end
33
33
  end
34
-
34
+
35
35
  def destroy
36
36
  @product_category.destroy
37
- redirect_to :product_categories, :flash => {:notice => "Category has been removed successfully"}
37
+ redirect_to :product_categories, :flash => { :notice => t('shoppe.product_category.destroy_notice') }
38
38
  end
39
-
39
+
40
40
  private
41
-
41
+
42
42
  def safe_params
43
43
  params[:product_category].permit(:name, :permalink, :description, :image_file)
44
44
  end
45
-
45
+
46
46
  end
47
47
  end
@@ -1,47 +1,58 @@
1
1
  module Shoppe
2
2
  class ProductsController < Shoppe::ApplicationController
3
-
3
+
4
4
  before_filter { @active_nav = :products }
5
5
  before_filter { params[:id] && @product = Shoppe::Product.root.find(params[:id]) }
6
-
6
+
7
7
  def index
8
8
  @products = Shoppe::Product.root.includes(:stock_level_adjustments, :default_image, :product_category, :variants).order(:name).group_by(&:product_category).sort_by { |cat,pro| cat.name }
9
9
  end
10
-
10
+
11
11
  def new
12
12
  @product = Shoppe::Product.new
13
13
  end
14
-
14
+
15
15
  def create
16
16
  @product = Shoppe::Product.new(safe_params)
17
17
  if @product.save
18
- redirect_to :products, :flash => {:notice => "Product has been created successfully"}
18
+ redirect_to :products, :flash => {:notice => t('shoppe.products.create_notice') }
19
19
  else
20
20
  render :action => "new"
21
21
  end
22
22
  end
23
-
23
+
24
24
  def edit
25
25
  end
26
-
26
+
27
27
  def update
28
28
  if @product.update(safe_params)
29
- redirect_to [:edit, @product], :flash => {:notice => "Product has been updated successfully"}
29
+ redirect_to [:edit, @product], :flash => {:notice => t('shoppe.products.update_notice') }
30
30
  else
31
31
  render :action => "edit"
32
32
  end
33
33
  end
34
-
34
+
35
35
  def destroy
36
36
  @product.destroy
37
- redirect_to :products, :flash => {:notice => "Product has been removed successfully"}
37
+ redirect_to :products, :flash => {:notice => t('shoppe.products.destroy_notice')}
38
38
  end
39
-
39
+
40
+ def import
41
+ if request.post?
42
+ if params[:import].nil?
43
+ redirect_to import_products_path, :flash => {:alert => I18n.t('shoppe.imports.errors.no_file')}
44
+ else
45
+ Shoppe::Product.import(params[:import][:import_file])
46
+ redirect_to products_path, :flash => {:notice => I18n.t("shoppe.products.imports.success")}
47
+ end
48
+ end
49
+ end
50
+
40
51
  private
41
-
52
+
42
53
  def safe_params
43
54
  params[:product].permit(:product_category_id, :name, :sku, :permalink, :description, :short_description, :weight, :price, :cost_price, :tax_rate_id, :stock_control, :default_image_file, :data_sheet_file, :active, :featured, :in_the_box, :product_attributes_array => [:key, :value, :searchable, :public])
44
55
  end
45
-
56
+
46
57
  end
47
58
  end
@@ -3,30 +3,30 @@ module Shoppe
3
3
 
4
4
  layout 'shoppe/sub'
5
5
  skip_before_filter :login_required, :only => [:new, :create, :reset]
6
-
6
+
7
7
  def create
8
8
  if user = Shoppe::User.authenticate(params[:email_address], params[:password])
9
9
  session[:shoppe_user_id] = user.id
10
10
  redirect_to :orders
11
11
  else
12
- flash.now[:alert] = "The email address and/or password you have entered is invalid. Please check and try again."
12
+ flash.now[:alert] = t('shoppe.sessions.create_alert')
13
13
  render :action => "new"
14
14
  end
15
15
  end
16
-
16
+
17
17
  def destroy
18
18
  session[:shoppe_user_id] = nil
19
19
  redirect_to :login
20
20
  end
21
-
21
+
22
22
  def reset
23
-
23
+
24
24
  if request.post?
25
25
  if user = Shoppe::User.find_by_email_address(params[:email_address])
26
26
  user.reset_password!
27
- redirect_to login_path(:email_address => params[:email_address]), :notice => "An e-mail has been sent to #{user.email_address} with a new password"
27
+ redirect_to login_path(:email_address => params[:email_address]), :notice => t('shoppe.sessions.reset_notice', email_address: user.email_address)
28
28
  else
29
- flash.now[:alert] = "No user was found matching the e-mail address"
29
+ flash.now[:alert] = t('shoppe.sessions.reset_alert')
30
30
  end
31
31
  end
32
32
  end
@@ -1,16 +1,16 @@
1
1
  module Shoppe
2
2
  class SettingsController < ApplicationController
3
-
3
+
4
4
  before_filter { @active_nav = :settings }
5
-
5
+
6
6
  def update
7
7
  if Shoppe.settings.demo_mode?
8
- raise Shoppe::Error, "You cannot make changes to settings in demo mode. Sorry about that."
8
+ raise Shoppe::Error, t('shoppe.settings.demo_mode_error')
9
9
  end
10
-
10
+
11
11
  Shoppe::Setting.update_from_hash(params[:settings].permit!)
12
- redirect_to :settings, :notice => "Settings have been updated successfully."
12
+ redirect_to :settings, :notice => t('shoppe.settings.update_notice')
13
13
  end
14
-
14
+
15
15
  end
16
16
  end
@@ -3,11 +3,11 @@ module Shoppe
3
3
 
4
4
  SUITABLE_OBJECTS = ['Shoppe::Product']
5
5
  before_filter do
6
- raise Shoppe::Error, "Invalid item_type (must be one of #{SUITABLE_OBJECTS.to_sentence})" unless SUITABLE_OBJECTS.include?(params[:item_type])
6
+ raise Shoppe::Error, t('shoppe.stock_level_adjustments.invalid_item_type', suitable_objects: SUITABLE_OBJECTS.to_sentence) unless SUITABLE_OBJECTS.include?(params[:item_type])
7
7
  @item = params[:item_type].constantize.find(params[:item_id].to_i)
8
8
  end
9
9
  before_filter { params[:id] && @sla = @item.stock_level_adjustments.find(params[:id].to_i) }
10
-
10
+
11
11
  def index
12
12
  @stock_level_adjustments = @item.stock_level_adjustments.ordered.page(params[:page]).per(10)
13
13
  @new_sla = @item.stock_level_adjustments.build if @new_sla.nil?
@@ -15,7 +15,7 @@ module Shoppe
15
15
  render :action => 'index', :layout => false
16
16
  end
17
17
  end
18
-
18
+
19
19
  def create
20
20
  @new_sla = @item.stock_level_adjustments.build(params[:stock_level_adjustment].permit(:description, :adjustment))
21
21
  if @new_sla.save
@@ -23,7 +23,7 @@ module Shoppe
23
23
  @new_sla = @item.stock_level_adjustments.build
24
24
  index
25
25
  else
26
- redirect_to stock_level_adjustments_path(:item_id => params[:item_id], :item_type => params[:item_type]), :notice => "Adjustment has been added successfully"
26
+ redirect_to stock_level_adjustments_path(:item_id => params[:item_id], :item_type => params[:item_type]), :notice => t('shoppe.stock_level_adjustments.create_notice')
27
27
  end
28
28
  else
29
29
  if request.xhr?
@@ -35,6 +35,6 @@ module Shoppe
35
35
  end
36
36
  end
37
37
  end
38
-
38
+
39
39
  end
40
40
  end
@@ -1,49 +1,49 @@
1
1
  module Shoppe
2
2
  class TaxRatesController < Shoppe::ApplicationController
3
-
3
+
4
4
  before_filter { @active_nav = :tax_rates }
5
5
  before_filter { params[:id] && @tax_rate = Shoppe::TaxRate.find(params[:id]) }
6
-
6
+
7
7
  def index
8
8
  @tax_rates = Shoppe::TaxRate.ordered.all
9
9
  end
10
-
10
+
11
11
  def new
12
12
  @tax_rate = Shoppe::TaxRate.new
13
13
  render :action => "form"
14
14
  end
15
-
15
+
16
16
  def create
17
17
  @tax_rate = Shoppe::TaxRate.new(safe_params)
18
18
  if @tax_rate.save
19
- redirect_to :tax_rates, :flash => {:notice => "Tax rate has been created successfully"}
19
+ redirect_to :tax_rates, :flash => {:notice => t('shoppe.tax_rates.create_notice') }
20
20
  else
21
21
  render :action => "form"
22
22
  end
23
23
  end
24
-
24
+
25
25
  def edit
26
26
  render :action => "form"
27
27
  end
28
-
28
+
29
29
  def update
30
30
  if @tax_rate.update(safe_params)
31
- redirect_to [:edit, @tax_rate], :flash => {:notice => "Tax rate has been updated successfully"}
31
+ redirect_to [:edit, @tax_rate], :flash => {:notice => t('shoppe.tax_rates.update_notice')}
32
32
  else
33
33
  render :action => "form"
34
34
  end
35
35
  end
36
-
36
+
37
37
  def destroy
38
38
  @tax_rate.destroy
39
- redirect_to :tax_rates, :flash => {:notice => "Tax rate has been removed successfully"}
39
+ redirect_to :tax_rates, :flash => {:notice => t('shoppe.tax_rates.destroy_notice')}
40
40
  end
41
-
41
+
42
42
  private
43
-
43
+
44
44
  def safe_params
45
45
  params[:tax_rate].permit(:name, :rate, :address_type, :country_ids => [])
46
46
  end
47
-
47
+
48
48
  end
49
49
  end