camaleon_ecommerce 1.2 → 1.2.1
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/plugins/ecommerce/admin_product.js.coffee +17 -1
- data/app/controllers/plugins/ecommerce/admin/coupons_controller.rb +1 -1
- data/app/controllers/plugins/ecommerce/admin/orders_controller.rb +24 -21
- data/app/controllers/plugins/ecommerce/admin/payment_methods_controller.rb +2 -34
- data/app/controllers/plugins/ecommerce/admin/prices_controller.rb +3 -6
- data/app/controllers/plugins/ecommerce/admin/settings_controller.rb +2 -1
- data/app/controllers/plugins/ecommerce/admin/shipping_methods_controller.rb +2 -2
- data/app/controllers/plugins/ecommerce/admin/tax_rates_controller.rb +1 -1
- data/app/controllers/plugins/ecommerce/admin_controller.rb +2 -2
- data/app/controllers/plugins/ecommerce/front/checkout_controller.rb +34 -18
- data/app/controllers/plugins/ecommerce/front/orders_controller.rb +3 -4
- data/app/controllers/plugins/ecommerce/front_controller.rb +26 -11
- data/app/decorators/plugins/ecommerce/cart_decorator.rb +5 -5
- data/app/decorators/plugins/ecommerce/coupon_decorator.rb +8 -27
- data/app/decorators/plugins/ecommerce/order_decorator.rb +1 -1
- data/app/decorators/plugins/ecommerce/product_decorator.rb +33 -20
- data/app/decorators/plugins/ecommerce/product_item_decorator.rb +8 -2
- data/app/decorators/plugins/ecommerce/product_variation_decorator.rb +1 -1
- data/app/helpers/plugins/ecommerce/ecommerce_email_helper.rb +7 -6
- data/app/helpers/plugins/ecommerce/ecommerce_functions_helper.rb +276 -33
- data/app/helpers/plugins/ecommerce/ecommerce_helper.rb +59 -56
- data/app/models/plugins/ecommerce/attribute.rb +3 -0
- data/app/models/plugins/ecommerce/cart.rb +31 -7
- data/app/models/plugins/ecommerce/legacy_order.rb +1 -30
- data/app/models/plugins/ecommerce/order.rb +11 -5
- data/app/models/plugins/ecommerce/order_detail.rb +1 -0
- data/app/models/plugins/ecommerce/payment_method.rb +9 -5
- data/app/models/plugins/ecommerce/product_variation.rb +6 -0
- data/app/services/plugins/ecommerce/cart_service.rb +4 -17
- data/app/views/camaleon_cms/html_mailer/order_canceled.html.erb +2 -2
- data/app/views/camaleon_cms/html_mailer/order_confirmed.html.erb +2 -2
- data/app/views/camaleon_cms/html_mailer/order_received.html.erb +5 -3
- data/app/views/camaleon_cms/html_mailer/order_received_admin.html.erb +3 -3
- data/app/views/camaleon_cms/html_mailer/order_shipped.html.erb +2 -2
- data/app/views/camaleon_cms/html_mailer/recovery_cart.html.erb +3 -3
- data/app/views/plugins/ecommerce/admin/coupons/form.html.erb +11 -11
- data/app/views/plugins/ecommerce/admin/coupons/index.html.erb +11 -11
- data/app/views/plugins/ecommerce/admin/orders/form.html.erb +2 -2
- data/app/views/plugins/ecommerce/admin/orders/index.html.erb +53 -63
- data/app/views/plugins/ecommerce/admin/payment_methods/form.html.erb +30 -24
- data/app/views/plugins/ecommerce/admin/payment_methods/index.html.erb +8 -8
- data/app/views/plugins/ecommerce/admin/payment_methods/show.html.erb +22 -22
- data/app/views/plugins/ecommerce/admin/prices/form.html.erb +6 -6
- data/app/views/plugins/ecommerce/admin/prices/index.html.erb +8 -8
- data/app/views/plugins/ecommerce/admin/product_attributes.html.erb +1 -1
- data/app/views/plugins/ecommerce/admin/products/_variations.html.erb +4 -4
- data/app/views/plugins/ecommerce/admin/products/index.html.erb +5 -5
- data/app/views/plugins/ecommerce/admin/settings/index.html.erb +20 -8
- data/app/views/plugins/ecommerce/admin/shipping_methods/form.html.erb +5 -5
- data/app/views/plugins/ecommerce/admin/shipping_methods/index.html.erb +8 -9
- data/app/views/plugins/ecommerce/admin/shipping_methods/show.html.erb +4 -4
- data/app/views/plugins/ecommerce/admin/tax_rates/form.html.erb +3 -3
- data/app/views/plugins/ecommerce/admin/tax_rates/index.html.erb +7 -7
- data/app/views/plugins/ecommerce/front/checkout/index.html.erb +4 -4
- data/app/views/plugins/ecommerce/front/login.html.erb +3 -6
- data/app/views/plugins/ecommerce/front/orders/show.html.erb +7 -1
- data/app/views/plugins/ecommerce/partials/_cart_widget.html.erb +14 -29
- data/app/views/plugins/ecommerce/partials/checkout/_details.html.erb +1 -1
- data/app/views/plugins/ecommerce/partials/checkout/_payments.html.erb +100 -99
- data/app/views/plugins/ecommerce/partials/checkout/_user_info.html.erb +2 -2
- data/app/views/post_types/commerce/{_product_widget.html.erb → _post_list_item.html.erb} +0 -0
- data/app/views/post_types/commerce/_product_info.html.erb +45 -0
- data/app/views/post_types/commerce/single.html.erb +63 -85
- data/config/camaleon_plugin.json +3 -8
- data/config/custom_models.rb +28 -4
- data/config/locales/en.yml +27 -12
- data/config/locales/es.yml +70 -57
- data/config/routes.rb +1 -0
- data/db/migrate/20161202182552_add_cookie_key_to_cart.rb +5 -0
- data/lib/ecommerce/version.rb +1 -1
- metadata +7 -14
- data/app/helpers/plugins/ecommerce/ecommerce_payment_helper.rb +0 -6
- data/app/models/plugins/ecommerce/legacy_cart.rb +0 -50
- data/app/services/plugins/ecommerce/product_item_service.rb +0 -29
- data/app/services/plugins/ecommerce/product_service.rb +0 -17
- data/app/services/plugins/ecommerce/site_service.rb +0 -21
- data/app/services/plugins/ecommerce/user_cart_service.rb +0 -12
- data/app/services/plugins/ecommerce/user_product_service.rb +0 -29
- data/app/views/post_types/commerce.html.erb +0 -22
- data/app/views/post_types/commerce/category.html.erb +0 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b0c541a7311004ac7d1612a1526fe1bbe74ba6da
|
|
4
|
+
data.tar.gz: a4a62e0f80a8f9ae124417580584a325c4a98a7f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: adff56c87875152cd91047a8a2180b90c0d0b69b3dffb873d0b202c7063755d182c5dd4a1785e47e8800d8fd8de232683a5ffecbd9a75fa9b5f73cfa0151c2ac
|
|
7
|
+
data.tar.gz: 803c28e4d16fa6786a3710db1d9a06d2812d2a58f16b05cb3312626dcb67513bfe75203175ca52596fe9d6e030cd68a3fd66e6532f38212450bcf48cf9d450b9
|
|
@@ -26,6 +26,7 @@ $ ->
|
|
|
26
26
|
clone = cache_variation.clone().attr('data-id', 'new_'+variation_id+=1)
|
|
27
27
|
product_variations.children('.variations_sortable').append(clone)
|
|
28
28
|
clone.trigger('fill_variation_id')
|
|
29
|
+
check_variation_status()
|
|
29
30
|
return false
|
|
30
31
|
|
|
31
32
|
# add new variation value
|
|
@@ -46,7 +47,7 @@ $ ->
|
|
|
46
47
|
sel = $(this).closest('.row').find('.product_attribute_vals_select').html('')
|
|
47
48
|
for attr in PRODUCT_ATTRIBUTES
|
|
48
49
|
if `attr.id == v`
|
|
49
|
-
for value in attr.
|
|
50
|
+
for value in attr.translated_values
|
|
50
51
|
sel.append('<option value="'+value.id+'">'+value.label.replace(/</g, '<')+'</option>')
|
|
51
52
|
)
|
|
52
53
|
|
|
@@ -78,6 +79,21 @@ $ ->
|
|
|
78
79
|
return false
|
|
79
80
|
$(this).closest('.product_variation').fadeOut('slow', ->
|
|
80
81
|
$(this).remove()
|
|
82
|
+
check_variation_status()
|
|
81
83
|
)
|
|
82
84
|
return false
|
|
83
85
|
)
|
|
86
|
+
|
|
87
|
+
# check the variation status and disable or enable some custom fields
|
|
88
|
+
check_variation_status = ->
|
|
89
|
+
fields = ['ecommerce_sku', 'ecommerce_price', 'ecommerce_weight', 'ecommerce_stock', 'ecommerce_qty']
|
|
90
|
+
if product_variations.find('.product_variation').length > 0 # is a variation product
|
|
91
|
+
for key in fields
|
|
92
|
+
p_field = form.find('.c-field-group .item-custom-field[data-field-key="'+key+'"]')
|
|
93
|
+
p_field.hide().find('.required').addClass('e_skip_required').removeClass('required')
|
|
94
|
+
else
|
|
95
|
+
for key in fields
|
|
96
|
+
p_field = form.find('.c-field-group .item-custom-field[data-field-key="'+key+'"]')
|
|
97
|
+
p_field.show().find('.e_skip_required').removeClass('e_skip_required').addClass('required')
|
|
98
|
+
check_variation_status()
|
|
99
|
+
|
|
@@ -5,19 +5,16 @@ class Plugins::Ecommerce::Admin::OrdersController < Plugins::Ecommerce::AdminCon
|
|
|
5
5
|
def index
|
|
6
6
|
orders = current_site.orders
|
|
7
7
|
if params[:q].present?
|
|
8
|
-
orders = orders.where(slug
|
|
8
|
+
orders = orders.where("#{Plugins::Ecommerce::Order.table_name}.slug LIKE ?", "%#{params[:q]}%")
|
|
9
9
|
end
|
|
10
10
|
if params[:c].present?
|
|
11
|
-
orders = orders.joins(:
|
|
11
|
+
orders = orders.joins(:user).where("#{Cama::User.table_name}.first_name LIKE ? OR #{Cama::User.table_name}.last_name LIKE ?", "%#{params[:c]}%", "%#{params[:c]}%")
|
|
12
12
|
end
|
|
13
13
|
if params[:e].present?
|
|
14
|
-
orders = orders.joins(:
|
|
15
|
-
end
|
|
16
|
-
if params[:p].present?
|
|
17
|
-
orders = orders.joins(:details).where("plugins_order_details.phone LIKE ?", "%#{params[:p]}%")
|
|
14
|
+
orders = orders.joins(:user).where("#{Cama::User.table_name}.email LIKE ?", "%#{params[:e]}%")
|
|
18
15
|
end
|
|
19
16
|
if params[:s].present?
|
|
20
|
-
orders = orders.where(status: params[:s])
|
|
17
|
+
orders = orders.where(status: params[:s].split('|'))
|
|
21
18
|
end
|
|
22
19
|
orders = orders.order('received_at desc')
|
|
23
20
|
@orders = orders.paginate(:page => params[:page], :per_page => current_site.admin_per_page)
|
|
@@ -25,7 +22,7 @@ class Plugins::Ecommerce::Admin::OrdersController < Plugins::Ecommerce::AdminCon
|
|
|
25
22
|
|
|
26
23
|
def show
|
|
27
24
|
@order = @order.decorate
|
|
28
|
-
add_breadcrumb("#{t('
|
|
25
|
+
add_breadcrumb("#{t('plugins.ecommerce.details_order', default: 'Order details')} - #{@order.slug}")
|
|
29
26
|
end
|
|
30
27
|
|
|
31
28
|
def new
|
|
@@ -43,49 +40,55 @@ class Plugins::Ecommerce::Admin::OrdersController < Plugins::Ecommerce::AdminCon
|
|
|
43
40
|
@order.set_meta("shipping_address", params[:order][:shipping_address])
|
|
44
41
|
@order.set_metas(params[:metas])
|
|
45
42
|
@order.update(params.require(:plugins_ecommerce_order).permit(:shipped_at))
|
|
46
|
-
flash[:notice] = "#{t('
|
|
43
|
+
flash[:notice] = "#{t('plugins.ecommerce.message.order_updated', default: 'Order Updated')}"
|
|
47
44
|
redirect_to action: :show, id: params[:id]
|
|
48
45
|
end
|
|
49
46
|
|
|
50
47
|
def destroy
|
|
51
48
|
if @order.destroy
|
|
52
|
-
flash[:notice] = "#{t('
|
|
49
|
+
flash[:notice] = "#{t('plugins.ecommerce.message.order_destroyed', default: 'Order Destroyed')}"
|
|
53
50
|
else
|
|
54
|
-
flash[:error] = "#{t('
|
|
51
|
+
flash[:error] = "#{t('plugins.ecommerce.message.order_no_destroyed', default: 'Occurred some problems destroying the order')}"
|
|
55
52
|
end
|
|
56
53
|
redirect_to action: :index
|
|
57
54
|
end
|
|
58
55
|
|
|
59
56
|
# accepted order
|
|
60
57
|
def mark_accepted
|
|
61
|
-
@order.accepted!
|
|
62
58
|
r = {order: @order}; hooks_run('plugin_ecommerce_before_accepted_order', r)
|
|
63
|
-
|
|
59
|
+
@order.accepted!
|
|
60
|
+
message = "#{t('plugins.ecommerce.message.order_accepted', default: 'Order Accepted')}"
|
|
64
61
|
r = {order: @order, message: message}; hooks_run('plugin_ecommerce_after_accepted_order', r)
|
|
65
62
|
flash[:notice] = r[:message]
|
|
66
63
|
redirect_to action: :index
|
|
67
64
|
end
|
|
68
65
|
|
|
69
66
|
def mark_bank_confirmed
|
|
70
|
-
@order.
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
if @order.on_delivery_pending?
|
|
68
|
+
@order.on_delivery_confirmed!
|
|
69
|
+
flash[:notice] = "#{t('plugins.ecommerce.message.order_on_delivery_confirmed', default: 'Payment on Delivery Confirmed')}"
|
|
70
|
+
commerce_send_order_received_email(@order)
|
|
71
|
+
else
|
|
72
|
+
@order.bank_confirmed!
|
|
73
|
+
flash[:notice] = "#{t('plugins.ecommerce.message.order_bank_confirmed', default: 'Pay Bank Confirmed')}"
|
|
74
|
+
commerce_send_order_received_email(@order, true)
|
|
75
|
+
end
|
|
73
76
|
redirect_to action: :index
|
|
74
77
|
end
|
|
75
78
|
|
|
76
79
|
# shipped order
|
|
77
80
|
def mark_shipped
|
|
78
81
|
@order.shipped!(params[:consignment_number])
|
|
79
|
-
cama_send_email(@order.user.email, t('
|
|
80
|
-
flash[:notice] = "#{t('
|
|
82
|
+
cama_send_email(@order.user.email, t('plugins.ecommerce.mail.order_shipped.subject'), {template_name: 'order_shipped', extra_data: {order: @order, consignment_number: params[:consignment_number]}})
|
|
83
|
+
flash[:notice] = "#{t('plugins.ecommerce.message.order_shipped', default: 'Order Shipped')}"
|
|
81
84
|
redirect_to action: :index
|
|
82
85
|
end
|
|
83
86
|
|
|
84
87
|
def mark_canceled
|
|
85
88
|
@order.canceled!
|
|
86
89
|
@order.set_meta('description', params[:description])
|
|
87
|
-
cama_send_email(@order.user.email, t('
|
|
88
|
-
flash[:notice] = "#{t('
|
|
90
|
+
cama_send_email(@order.user.email, t('plugins.ecommerce.mail.order_canceled.subject'), {template_name: 'order_canceled', extra_data: {order: @order}, description: params[:description]})
|
|
91
|
+
flash[:notice] = "#{t('plugins.ecommerce.message.order_canceled', default: 'Order canceled')}"
|
|
89
92
|
redirect_to action: :index
|
|
90
93
|
end
|
|
91
94
|
|
|
@@ -95,7 +98,7 @@ class Plugins::Ecommerce::Admin::OrdersController < Plugins::Ecommerce::AdminCon
|
|
|
95
98
|
end
|
|
96
99
|
|
|
97
100
|
def set_order_bread
|
|
98
|
-
add_breadcrumb I18n.t("
|
|
101
|
+
add_breadcrumb I18n.t("plugins.ecommerce.orders", default: 'Orders'), admin_plugins_ecommerce_orders_path
|
|
99
102
|
end
|
|
100
103
|
|
|
101
104
|
end
|
|
@@ -8,12 +8,12 @@ class Plugins::Ecommerce::Admin::PaymentMethodsController < Plugins::Ecommerce::
|
|
|
8
8
|
def new
|
|
9
9
|
@payment_method = current_site.payment_methods.new
|
|
10
10
|
@payment_method.status = 1
|
|
11
|
-
add_breadcrumb("#{t('
|
|
11
|
+
add_breadcrumb("#{t('plugins.ecommerce.new')}")
|
|
12
12
|
render 'form'
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def show
|
|
16
|
-
add_breadcrumb("#{t('
|
|
16
|
+
add_breadcrumb("#{t('plugins.ecommerce.table.details')}")
|
|
17
17
|
@payment_method = @payment_method.decorate
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -34,17 +34,6 @@ class Plugins::Ecommerce::Admin::PaymentMethodsController < Plugins::Ecommerce::
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def update
|
|
37
|
-
|
|
38
|
-
if defined?(params[:options][:type]) && params[:options][:type] == 'paypal'
|
|
39
|
-
unless valid_paypal_data(params[:options])
|
|
40
|
-
flash.now[:error] = "#{t('plugin.ecommerce.message.error_paypal_values')}"
|
|
41
|
-
render 'form'
|
|
42
|
-
return
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
#FIXME create valid_authorize_net_data function
|
|
47
|
-
|
|
48
37
|
if @payment_method.update(payment_permit_data)
|
|
49
38
|
@payment_method.set_meta('_default',params[:options])
|
|
50
39
|
flash[:notice] = t('camaleon_cms.admin.post_type.message.updated')
|
|
@@ -54,11 +43,7 @@ class Plugins::Ecommerce::Admin::PaymentMethodsController < Plugins::Ecommerce::
|
|
|
54
43
|
end
|
|
55
44
|
end
|
|
56
45
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
46
|
private
|
|
61
|
-
|
|
62
47
|
def payment_permit_data
|
|
63
48
|
params.require(:plugins_ecommerce_payment_method).permit!
|
|
64
49
|
end
|
|
@@ -66,21 +51,4 @@ class Plugins::Ecommerce::Admin::PaymentMethodsController < Plugins::Ecommerce::
|
|
|
66
51
|
def set_order
|
|
67
52
|
@payment_method = current_site.payment_methods.find(params[:id])#.decorate
|
|
68
53
|
end
|
|
69
|
-
|
|
70
|
-
def valid_paypal_data(data)
|
|
71
|
-
ActiveMerchant::Billing::Base.mode = data[:paypal_sandbox].to_s.to_bool ? :test : :production
|
|
72
|
-
paypal_options = {
|
|
73
|
-
:login => data[:paypal_login],
|
|
74
|
-
:password => data[:paypal_password],
|
|
75
|
-
:signature => data[:paypal_signature]
|
|
76
|
-
}
|
|
77
|
-
opts = {
|
|
78
|
-
:ip => request.remote_ip,
|
|
79
|
-
:return_url => plugins_ecommerce_order_success_url(order: 'test'),
|
|
80
|
-
:cancel_return_url => plugins_ecommerce_order_cancel_url(order: 'test')
|
|
81
|
-
}
|
|
82
|
-
@gateway = ActiveMerchant::Billing::PaypalExpressGateway.new(paypal_options)
|
|
83
|
-
response = @gateway.setup_authorization(500, opts)
|
|
84
|
-
response.success?
|
|
85
|
-
end
|
|
86
54
|
end
|
|
@@ -2,13 +2,11 @@ class Plugins::Ecommerce::Admin::PricesController < Plugins::Ecommerce::AdminCon
|
|
|
2
2
|
before_action :set_shipping_method
|
|
3
3
|
|
|
4
4
|
def index
|
|
5
|
-
add_breadcrumb("#{t('plugin.ecommerce.product.price')}")
|
|
6
5
|
end
|
|
7
6
|
|
|
8
7
|
def new
|
|
9
8
|
@price = {}
|
|
10
|
-
add_breadcrumb("#{t('
|
|
11
|
-
add_breadcrumb("#{t('plugin.ecommerce.new')}")
|
|
9
|
+
add_breadcrumb("#{t('plugins.ecommerce.new')}")
|
|
12
10
|
render 'form'
|
|
13
11
|
end
|
|
14
12
|
|
|
@@ -17,7 +15,6 @@ class Plugins::Ecommerce::Admin::PricesController < Plugins::Ecommerce::AdminCon
|
|
|
17
15
|
|
|
18
16
|
def edit
|
|
19
17
|
@price = @prices[params[:id].to_sym] || {}
|
|
20
|
-
add_breadcrumb("#{t('plugin.ecommerce.product.price')}", admin_plugins_ecommerce_shipping_method_prices_path( params[:shipping_method_id] ))
|
|
21
18
|
add_breadcrumb("#{t('camaleon_cms.admin.button.edit')}")
|
|
22
19
|
render 'form'
|
|
23
20
|
end
|
|
@@ -53,9 +50,9 @@ class Plugins::Ecommerce::Admin::PricesController < Plugins::Ecommerce::AdminCon
|
|
|
53
50
|
private
|
|
54
51
|
def set_shipping_method
|
|
55
52
|
@shipping_method = current_site.shipping_methods.find(params[:shipping_method_id])
|
|
56
|
-
add_breadcrumb(t("
|
|
53
|
+
add_breadcrumb(t("plugins.ecommerce.shipping_methods"))
|
|
57
54
|
add_breadcrumb(@shipping_method.name)
|
|
58
|
-
add_breadcrumb(t("
|
|
55
|
+
add_breadcrumb(t("plugins.ecommerce.shipping_prices"), admin_plugins_ecommerce_shipping_method_prices_path(params[:shipping_method_id]))
|
|
59
56
|
@prices = @shipping_method.get_meta("prices", {})
|
|
60
57
|
end
|
|
61
58
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
class Plugins::Ecommerce::Admin::SettingsController < Plugins::Ecommerce::AdminController
|
|
2
|
-
add_breadcrumb I18n.t("
|
|
2
|
+
add_breadcrumb I18n.t("plugins.ecommerce.e_commerce")
|
|
3
3
|
def index
|
|
4
4
|
@setting = current_site.get_meta("_setting_ecommerce", {})
|
|
5
5
|
end
|
|
6
6
|
|
|
7
|
+
# save settings
|
|
7
8
|
def saved
|
|
8
9
|
current_site.set_meta('_setting_ecommerce', params[:setting])
|
|
9
10
|
flash[:notice] = t('camaleon_cms.admin.post_type.message.updated')
|
|
@@ -7,12 +7,12 @@ class Plugins::Ecommerce::Admin::ShippingMethodsController < Plugins::Ecommerce:
|
|
|
7
7
|
|
|
8
8
|
def new
|
|
9
9
|
@shipping_method = current_site.shipping_methods.new
|
|
10
|
-
add_breadcrumb("#{t('
|
|
10
|
+
add_breadcrumb("#{t('plugins.ecommerce.new')}")
|
|
11
11
|
render 'form'
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def show
|
|
15
|
-
add_breadcrumb("#{t('
|
|
15
|
+
add_breadcrumb("#{t('plugins.ecommerce.table.details')}")
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def edit
|
|
@@ -33,7 +33,7 @@ class Plugins::Ecommerce::AdminController < CamaleonCms::Apps::PluginsAdminContr
|
|
|
33
33
|
|
|
34
34
|
private
|
|
35
35
|
def verify_ecommerce_permission
|
|
36
|
-
authorize! :posts,
|
|
37
|
-
add_breadcrumb I18n.t("
|
|
36
|
+
authorize! :posts, cama_ecommerce_post_type
|
|
37
|
+
add_breadcrumb I18n.t("plugins.ecommerce.e_commerce", default: 'Ecommerce'), admin_plugins_ecommerce_index_path
|
|
38
38
|
end
|
|
39
39
|
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
class Plugins::Ecommerce::Front::CheckoutController < Plugins::Ecommerce::FrontController
|
|
2
|
-
before_action :commerce_authenticate
|
|
2
|
+
before_action :commerce_authenticate, except: [:cart_add, :cart_update, :cart_remove, :cart_index]
|
|
3
3
|
before_action :set_cart
|
|
4
|
-
before_action :set_payment, only: [:pay_by_stripe, :pay_by_bank_transfer, :pay_by_credit_card, :pay_by_authorize_net, :pay_by_paypal]
|
|
4
|
+
before_action :set_payment, only: [:pay_by_stripe, :pay_by_bank_transfer, :pay_by_credit_card, :pay_by_authorize_net, :pay_by_paypal, :pay_by_on_delivery]
|
|
5
5
|
|
|
6
6
|
def index
|
|
7
7
|
unless @cart.product_items.count > 0
|
|
8
|
-
flash[:notice] = t('plugins.ecommerce.messages.cart_no_products', default: 'Not exist products in your cart')
|
|
8
|
+
flash[:cama_ecommerce][:notice] = t('plugins.ecommerce.messages.cart_no_products', default: 'Not exist products in your cart')
|
|
9
9
|
return redirect_to action: :cart_index
|
|
10
10
|
end
|
|
11
11
|
@ecommerce_breadcrumb << [t('plugins.ecommerce.messages.checkout', default: 'Checkout')]
|
|
@@ -31,7 +31,7 @@ class Plugins::Ecommerce::Front::CheckoutController < Plugins::Ecommerce::FrontC
|
|
|
31
31
|
if @cart.free_cart?
|
|
32
32
|
errors = ecommerce_verify_cart_errors(@cart)
|
|
33
33
|
if errors.present?
|
|
34
|
-
flash[:error] = errors.join('<br>')
|
|
34
|
+
flash[:cama_ecommerce][:error] = errors.join('<br>')
|
|
35
35
|
redirect_to :back
|
|
36
36
|
else
|
|
37
37
|
@cart.set_meta('free_order', true)
|
|
@@ -39,7 +39,7 @@ class Plugins::Ecommerce::Front::CheckoutController < Plugins::Ecommerce::FrontC
|
|
|
39
39
|
redirect_to plugins_ecommerce_orders_path
|
|
40
40
|
end
|
|
41
41
|
else
|
|
42
|
-
flash[:error] = "Invalid complete payment"
|
|
42
|
+
flash[:cama_ecommerce][:error] = "Invalid complete payment"
|
|
43
43
|
redirect_to :back
|
|
44
44
|
end
|
|
45
45
|
end
|
|
@@ -66,16 +66,16 @@ class Plugins::Ecommerce::Front::CheckoutController < Plugins::Ecommerce::FrontC
|
|
|
66
66
|
qty = data[:qty].to_f rescue 0
|
|
67
67
|
product = current_site.products.find(data[:product_id]).decorate
|
|
68
68
|
unless product.valid_variation?(params[:variation_id])
|
|
69
|
-
flash[:error] = t('plugins.ecommerce.messages.missing_variation', default: 'Invalid Product Variation')
|
|
69
|
+
flash[:cama_ecommerce][:error] = t('plugins.ecommerce.messages.missing_variation', default: 'Invalid Product Variation')
|
|
70
70
|
return redirect_to action: :cart_index
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
unless product.can_added?(qty, params[:variation_id])
|
|
74
|
-
flash[:error] = t('plugins.ecommerce.messages.not_enough_product_qty', product: product.the_variation_title(params[:variation_id]), qty: product.the_qty_real(params[:variation_id]), default: 'There is not enough products "%{product}" (Available %{qty})')
|
|
74
|
+
flash[:cama_ecommerce][:error] = t('plugins.ecommerce.messages.not_enough_product_qty', product: product.the_variation_title(params[:variation_id]), qty: product.the_qty_real(params[:variation_id]), default: 'There is not enough products "%{product}" (Available %{qty})')
|
|
75
75
|
return redirect_to :back
|
|
76
76
|
end
|
|
77
77
|
@cart.add_product(product, qty, params[:variation_id])
|
|
78
|
-
flash[:notice] = t('plugins.ecommerce.messages.added_product_in_cart', default: 'Product added into cart')
|
|
78
|
+
flash[:cama_ecommerce][:notice] = t('plugins.ecommerce.messages.added_product_in_cart', default: 'Product added into cart')
|
|
79
79
|
redirect_to action: :cart_index
|
|
80
80
|
end
|
|
81
81
|
|
|
@@ -91,20 +91,20 @@ class Plugins::Ecommerce::Front::CheckoutController < Plugins::Ecommerce::FrontC
|
|
|
91
91
|
errors << t('plugins.ecommerce.messages.not_enough_product_qty', product: product.the_variation_title(item.variation_id), qty: product.the_qty_real(item.variation_id), default: 'There is not enough products "%{product}" (Available %{qty})')
|
|
92
92
|
end
|
|
93
93
|
end
|
|
94
|
-
flash[:error] = errors.join('<br>') if errors.present?
|
|
95
|
-
flash[:notice] = t('plugins.ecommerce.messages.cart_updated', default: 'Shopping cart updated') unless errors.present?
|
|
94
|
+
flash[:cama_ecommerce][:error] = errors.join('<br>') if errors.present?
|
|
95
|
+
flash[:cama_ecommerce][:notice] = t('plugins.ecommerce.messages.cart_updated', default: 'Shopping cart updated') unless errors.present?
|
|
96
96
|
redirect_to action: :cart_index
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
def cart_remove
|
|
100
100
|
@cart.product_items.find(params[:product_item_id]).destroy
|
|
101
|
-
flash[:notice] = t('plugins.ecommerce.messages.cart_deleted', default: 'Product removed from your shopping cart')
|
|
101
|
+
flash[:cama_ecommerce][:notice] = t('plugins.ecommerce.messages.cart_deleted', default: 'Product removed from your shopping cart')
|
|
102
102
|
redirect_to action: :cart_index
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
def cancel_order
|
|
106
106
|
@cart.update({status: 'canceled', kind: 'order', closed_at: Time.now})
|
|
107
|
-
flash[:notice] = t('plugins.ecommerce.messages.canceled_order', default: "Canceled Order")
|
|
107
|
+
flash[:cama_ecommerce][:notice] = t('plugins.ecommerce.messages.canceled_order', default: "Canceled Order")
|
|
108
108
|
redirect_to plugins_ecommerce_orders_url
|
|
109
109
|
end
|
|
110
110
|
|
|
@@ -115,7 +115,7 @@ class Plugins::Ecommerce::Front::CheckoutController < Plugins::Ecommerce::FrontC
|
|
|
115
115
|
stripe_token: params[:stripeToken],
|
|
116
116
|
)
|
|
117
117
|
if result[:error].present?
|
|
118
|
-
flash[:error] = result[:error]
|
|
118
|
+
flash[:cama_ecommerce][:error] = result[:error]
|
|
119
119
|
if result[:payment_error]
|
|
120
120
|
flash[:payment_error] = true
|
|
121
121
|
end
|
|
@@ -132,6 +132,12 @@ class Plugins::Ecommerce::Front::CheckoutController < Plugins::Ecommerce::FrontC
|
|
|
132
132
|
redirect_to plugins_ecommerce_orders_url
|
|
133
133
|
end
|
|
134
134
|
|
|
135
|
+
def pay_by_on_delivery
|
|
136
|
+
@cart.set_meta("payment_data", params[:details])
|
|
137
|
+
mark_order_like_received(@cart, 'on_delivery')
|
|
138
|
+
redirect_to plugins_ecommerce_orders_url
|
|
139
|
+
end
|
|
140
|
+
|
|
135
141
|
def pay_by_authorize_net
|
|
136
142
|
res = Plugins::Ecommerce::CartService.new(current_site, @cart).
|
|
137
143
|
pay_with_authorize_net(payment_method: @payment, ip: request.remote_ip,
|
|
@@ -143,7 +149,7 @@ class Plugins::Ecommerce::Front::CheckoutController < Plugins::Ecommerce::FrontC
|
|
|
143
149
|
cvc: params[:cvCode],
|
|
144
150
|
)
|
|
145
151
|
if res[:error].present?
|
|
146
|
-
flash[:error] = res[:error]
|
|
152
|
+
flash[:cama_ecommerce][:error] = res[:error]
|
|
147
153
|
flash[:payment_error] = true
|
|
148
154
|
redirect_to :back
|
|
149
155
|
else
|
|
@@ -153,8 +159,18 @@ class Plugins::Ecommerce::Front::CheckoutController < Plugins::Ecommerce::FrontC
|
|
|
153
159
|
end
|
|
154
160
|
|
|
155
161
|
def success_paypal
|
|
156
|
-
@cart.
|
|
157
|
-
|
|
162
|
+
response = @cart.paypal_gateway.purchase(Plugins::Ecommerce::UtilService.ecommerce_money_to_cents(@cart.total_amount), {
|
|
163
|
+
:ip => request.remote_ip,
|
|
164
|
+
:token => params[:token],
|
|
165
|
+
:payer_id => params[:PayerID]
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
if response.success?
|
|
169
|
+
@cart.set_meta('payment_data', {token: params[:token], PayerID: params[:PayerID], ip: request.remote_ip})
|
|
170
|
+
mark_order_like_received(@cart)
|
|
171
|
+
else
|
|
172
|
+
flash[:cama_ecommerce][:error] = response.message
|
|
173
|
+
end
|
|
158
174
|
redirect_to plugins_ecommerce_orders_url
|
|
159
175
|
end
|
|
160
176
|
|
|
@@ -165,13 +181,13 @@ class Plugins::Ecommerce::Front::CheckoutController < Plugins::Ecommerce::FrontC
|
|
|
165
181
|
|
|
166
182
|
def pay_by_paypal
|
|
167
183
|
result = Plugins::Ecommerce::CartService.new(current_site, @cart).
|
|
168
|
-
pay_with_paypal(
|
|
184
|
+
pay_with_paypal(ip: request.remote_ip, return_url: plugins_ecommerce_checkout_success_paypal_url(order: @cart.slug), cancel_return_url: plugins_ecommerce_checkout_cancel_paypal_url(order: @cart.slug))
|
|
169
185
|
redirect_to result[:redirect_url]
|
|
170
186
|
end
|
|
171
187
|
|
|
172
188
|
private
|
|
173
189
|
def set_cart
|
|
174
|
-
@cart =
|
|
190
|
+
@cart = e_current_cart
|
|
175
191
|
end
|
|
176
192
|
|
|
177
193
|
def set_bread
|