effective_orders 2.2.2 → 2.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 965887ff8cbf3b7e8697439088668a0ac0aa90dc
4
- data.tar.gz: e27ef24995d31be57f907f4d42e8b4961d888e48
3
+ metadata.gz: db90e7dfaecba0d3d95887bb7a165d45793210c7
4
+ data.tar.gz: d4cea5629dbba4dc153a56410912c5540740236f
5
5
  SHA512:
6
- metadata.gz: 42885a3c34e5a3659a1a278f1f6630caa9bfb50899a4980e18b1643a8ac02f27e0b605d53a5fbd2c6de93d1ba5376475c7456916155f34aaf3ad5216b3fd9c33
7
- data.tar.gz: c0196dc5405d9311ee385ac6ffccb561057ddbb627731965e6d606c8600d829788b5b000dd47e8983086e5547134d29b8daae7a318622de14bb0bde2180f229f
6
+ metadata.gz: 424ad971b23b9dd732a247dd05c252ed2d10a1aacb7fea47ce6533b79ed69256ad1b49a2c6662b87de858d6258f82f2146485fe2df7c24d9afd246851c35b7cd
7
+ data.tar.gz: 745f4d71411babbe7bfc97aeadd48647a9dc706b4dc4680f3829ea17296202f30463a888f7f4413c43d3aac99ea0db914c8af8024bd8ba3f5f1052d22a31fd61
@@ -5,7 +5,12 @@ module Admin
5
5
  layout (EffectiveOrders.layout.kind_of?(Hash) ? EffectiveOrders.layout[:admin_customers] : EffectiveOrders.layout)
6
6
 
7
7
  def index
8
- @datatable = Effective::Datatables::Customers.new()
8
+ if Gem::Version.new(EffectiveDatatables::VERSION) < Gem::Version.new('3.0')
9
+ @datatable = Effective::Datatables::Customers.new()
10
+ else
11
+ @datatable = EffectiveCustomersDatatable.new(self)
12
+ end
13
+
9
14
  @page_title = 'Customers'
10
15
 
11
16
  EffectiveOrders.authorized?(self, :admin, :effective_orders)
@@ -5,7 +5,12 @@ module Admin
5
5
  layout (EffectiveOrders.layout.kind_of?(Hash) ? EffectiveOrders.layout[:admin_orders] : EffectiveOrders.layout)
6
6
 
7
7
  def index
8
- @datatable = Effective::Datatables::OrderItems.new()
8
+ if Gem::Version.new(EffectiveDatatables::VERSION) < Gem::Version.new('3.0')
9
+ @datatable = Effective::Datatables::OrderItems.new()
10
+ else
11
+ @datatable = EffectiveOrderItemsDatatable.new(self)
12
+ end
13
+
9
14
  @page_title = 'Order Items'
10
15
 
11
16
  EffectiveOrders.authorized?(self, :admin, :effective_orders)
@@ -5,7 +5,12 @@ module Admin
5
5
  layout (EffectiveOrders.layout.kind_of?(Hash) ? EffectiveOrders.layout[:admin_orders] : EffectiveOrders.layout)
6
6
 
7
7
  def index
8
- @datatable = Effective::Datatables::Orders.new()
8
+ if Gem::Version.new(EffectiveDatatables::VERSION) < Gem::Version.new('3.0')
9
+ @datatable = Effective::Datatables::Orders.new()
10
+ else
11
+ @datatable = EffectiveOrdersDatatable.new(self)
12
+ end
13
+
9
14
  @page_title = 'Orders'
10
15
 
11
16
  authorize_effective_order!
@@ -0,0 +1,38 @@
1
+ unless Gem::Version.new(EffectiveDatatables::VERSION) < Gem::Version.new('3.0')
2
+ class EffectiveCustomersDatatable < Effective::Datatable
3
+ datatable do
4
+ order :email
5
+
6
+ col :id, visible: false
7
+ col :email, sql_column: 'users.email' do |user|
8
+ mail_to user.email, user.email
9
+ end
10
+
11
+ if EffectiveOrders.stripe_enabled
12
+ col :stripe_customer_id
13
+ col :stripe_active_card
14
+ end
15
+
16
+ if EffectiveOrders.stripe_connect_enabled
17
+ col :stripe_connect_access_token
18
+ end
19
+
20
+ col :subscription_types, sql_column: 'subscription_types'
21
+
22
+ actions_col partial: 'admin/customers/actions', partial_as: :customer
23
+ end
24
+
25
+ collection do
26
+ Effective::Customer.customers.uniq
27
+ .joins(:user, :subscriptions)
28
+ .select('customers.*, users.email AS email')
29
+ .select("array_to_string(array(#{Effective::Subscription.purchased.select('subscriptions.stripe_plan_id').where('subscriptions.customer_id = customers.id').to_sql}), ' ,') AS subscription_types")
30
+ .group('customers.id, subscriptions.stripe_plan_id, users.email')
31
+ end
32
+
33
+ # def search_column(collection, table_column, search_term)
34
+ # return collection.where('subscriptions.stripe_plan_id ILIKE ?', "%#{search_term}%") if table_column[:name] == 'subscription_types'
35
+ # super
36
+ # end
37
+ end
38
+ end
@@ -0,0 +1,100 @@
1
+ unless Gem::Version.new(EffectiveDatatables::VERSION) < Gem::Version.new('3.0')
2
+ class EffectiveOrderItemsDatatable < Effective::Datatable
3
+ datatable do
4
+ order :purchased_at, :desc
5
+
6
+ col(:purchased_at, sql_column: 'orders.purchased_at') do |order_item|
7
+ Time.at(order_item[:purchased_at]).in_time_zone if order_item[:purchased_at].present?
8
+ end
9
+
10
+ col :id, visible: false
11
+
12
+ col :order
13
+ # if effectiveorders.obfuscate_order_ids
14
+ # col(:order, type: :obfuscated_id) do |order_item|
15
+ # obfuscated_id = effective::order.obfuscate(order_item[:order_id])
16
+ # link_to(obfuscated_id, (datatables_admin_path? ? effective_orders.admin_order_path(obfuscated_id) : effective_orders.order_path(obfuscated_id)))
17
+ # end
18
+ # else
19
+ # col(:order) do |order_item|
20
+ # link_to(order_item.to_param, (datatables_admin_path? ? effective_orders.admin_order_path(order_item.to_param) : effective_orders.order_path(order_item.to_param)))
21
+ # end
22
+ # end
23
+
24
+ unless attributes[:user_id]
25
+ col :email, sql_column: 'users.email', label: 'Buyer Email', do |order_item|
26
+ link_to order_item[:email], (edit_admin_user_path(order_item[:user_id]) rescue admin_user_path(order_item[:user_id]) rescue '#')
27
+ end
28
+ end
29
+
30
+ if EffectiveOrders.require_billing_address && attributes[:user_id].blank?
31
+ col :buyer_name, sortable: false, label: 'Buyer Name', do |order_item|
32
+ (order_item[:buyer_name] || '').split('!!SEP!!').find(&:present?)
33
+ end
34
+ end
35
+
36
+ col :purchase_state, sql_column: 'orders.purchase_state', filter: { collection: [%w(abandoned abandoned), [EffectiveOrders::PURCHASED, EffectiveOrders::PURCHASED], [EffectiveOrders::DECLINED, EffectiveOrders::DECLINED]], selected: EffectiveOrders::PURCHASED } do |order_item|
37
+ order_item[:purchase_state] || 'abandoned'
38
+ end
39
+
40
+ col :title do |order_item|
41
+ order_item.quantity == 1 ? order_item.title : "#{order_item.title} (#{order_item.quantity} purchased)"
42
+ end
43
+
44
+ col :subtotal, as: :price
45
+ col :tax, as: :price
46
+ col :total, as: :price
47
+
48
+ col :created_at, visible: false
49
+ col :updated_at, visible: false
50
+ end
51
+
52
+ collection do
53
+ collection = Effective::OrderItem.unscoped
54
+ .joins(order: :user)
55
+ .select('order_items.*, orders.*, users.email AS email')
56
+ .select("#{query_subtotal} AS subtotal, #{query_tax} AS tax, #{query_total} AS total")
57
+ .group('order_items.id, orders.id, users.email')
58
+
59
+ if EffectiveOrders.require_billing_address && defined?(EffectiveAddresses)
60
+ addresses_tbl = EffectiveAddresses.addresses_table_name
61
+
62
+ collection = collection
63
+ .joins("LEFT JOIN (SELECT addressable_id, string_agg(#{addresses_tbl}.full_name, '!!SEP!!') AS buyer_name FROM #{addresses_tbl} WHERE #{addresses_tbl}.category = 'billing' AND #{addresses_tbl}.addressable_type = 'Effective::Order' GROUP BY #{addresses_tbl}.addressable_id) #{addresses_tbl} ON orders.id = #{addresses_tbl}.addressable_id")
64
+ .group("#{addresses_tbl}.buyer_name")
65
+ .select("#{addresses_tbl}.buyer_name AS buyer_name")
66
+ end
67
+
68
+ attributes[:user_id].present? ? collection.where("#{EffectiveOrders.orders_table_name.to_s}.user_id = ?", attributes[:user_id]) : collection
69
+ end
70
+
71
+ def query_subtotal
72
+ 'SUM(price * quantity)'
73
+ end
74
+
75
+ def query_total
76
+ 'SUM((price * quantity) + (CASE tax_exempt WHEN true THEN 0 ELSE ((price * quantity) * tax_rate) END))'
77
+ end
78
+
79
+ def query_tax
80
+ '(CASE tax_exempt WHEN true THEN 0 ELSE ((price * quantity) * tax_rate) END)'
81
+ end
82
+
83
+ # def search_column(collection, table_column, search_term)
84
+ # if table_column[:name] == 'order'
85
+ # collection.where("#{EffectiveOrders.order_items_table_name.to_s}.order_id = ?", Effective::Order.deobfuscate(search_term))
86
+ # elsif table_column[:name] == 'purchase_state' && search_term == 'abandoned'
87
+ # collection.where("#{EffectiveOrders.orders_table_name.to_s}.purchase_state IS NULL")
88
+ # elsif table_column[:name] == 'subtotal'
89
+ # collection.having("#{query_subtotal} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i)
90
+ # elsif table_column[:name] == 'tax'
91
+ # collection.having("#{query_tax} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i)
92
+ # elsif table_column[:name] == 'total'
93
+ # collection.having("#{query_total} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i)
94
+ # else
95
+ # super
96
+ # end
97
+ # end
98
+
99
+ end
100
+ end
@@ -0,0 +1,89 @@
1
+ unless Gem::Version.new(EffectiveDatatables::VERSION) < Gem::Version.new('3.0')
2
+ class EffectiveOrdersDatatable < Effective::Datatable
3
+ datatable do
4
+ order :created_at, :desc
5
+
6
+ col :purchased_at
7
+
8
+ col :id do |order|
9
+ link_to order.to_param, effective_orders.admin_order_path(order)
10
+ end
11
+
12
+ # Don't display email or buyer_name column if this is for a specific user
13
+ if attributes[:user_id].blank?
14
+ col :email, sql_column: 'users.email', label: 'Buyer Email' do |order|
15
+ link_to order.user.email, (edit_admin_user_path(order.user) rescue admin_user_path(order.user) rescue '#')
16
+ end
17
+
18
+ if EffectiveOrders.use_address_full_name
19
+ col :buyer_name, sql_column: 'addresses.full_name' do |order|
20
+ order.billing_address.try(:full_name)
21
+ end
22
+
23
+ elsif # Not using address full name
24
+ col :buyer_name, sql_column: 'users.*' do |order|
25
+ order.user.to_s
26
+ end
27
+ end
28
+ end
29
+
30
+ if EffectiveOrders.require_billing_address
31
+ col :billing_address
32
+ end
33
+
34
+ if EffectiveOrders.require_shipping_address
35
+ col :shipping_address
36
+ end
37
+
38
+ col :purchase_state, label: 'State', search: { collection: purchase_state_filter_values } do |order|
39
+ order.purchase_state || 'abandoned'
40
+ end
41
+
42
+ col :order_items
43
+
44
+ col :subtotal, as: :price
45
+ col :tax, as: :price
46
+
47
+ col :tax_rate, visible: false do |order|
48
+ tax_rate_to_percentage(order.tax_rate)
49
+ end
50
+
51
+ col :total, as: :price
52
+
53
+ col :payment_provider, label: 'Provider', visible: false, search: { collection: ['nil'] + (EffectiveOrders.payment_providers + EffectiveOrders.other_payment_providers).sort }
54
+ col :payment_card, label: 'Card'
55
+
56
+ col :note, visible: false
57
+ col :note_to_buyer, visible: false
58
+ col :note_internal, visible: false
59
+
60
+ col :created_at, visible: false
61
+ col :updated_at, visible: false
62
+
63
+ actions_col partial: 'admin/orders/actions', partial_as: :order
64
+ end
65
+
66
+ collection do
67
+ collection = Effective::Order.unscoped
68
+ .joins(:user)
69
+ .includes(:addresses)
70
+ .includes(:user)
71
+ .includes(:order_items)
72
+
73
+ if EffectiveOrders.orders_collection_scope.respond_to?(:call)
74
+ collection = EffectiveOrders.orders_collection_scope.call(collection)
75
+ end
76
+
77
+ attributes[:user_id].present? ? collection.where(user_id: attributes[:user_id]) : collection
78
+ end
79
+
80
+ def purchase_state_filter_values
81
+ [
82
+ %w(abandoned nil),
83
+ [EffectiveOrders::PURCHASED, EffectiveOrders::PURCHASED],
84
+ [EffectiveOrders::DECLINED, EffectiveOrders::DECLINED],
85
+ [EffectiveOrders::PENDING, EffectiveOrders::PENDING]
86
+ ]
87
+ end
88
+ end
89
+ end
@@ -1,37 +1,39 @@
1
- module Effective
2
- module Datatables
3
- class Customers < Effective::Datatable
4
- datatable do
5
- default_order :email, :asc
1
+ if Gem::Version.new(EffectiveDatatables::VERSION) < Gem::Version.new('3.0')
2
+ module Effective
3
+ module Datatables
4
+ class Customers < Effective::Datatable
5
+ datatable do
6
+ default_order :email, :asc
6
7
 
7
- table_column :id, visible: false
8
- table_column(:email, column: 'users.email') { |user| mail_to user.email, user.email }
8
+ table_column :id, visible: false
9
+ table_column(:email, column: 'users.email') { |user| mail_to user.email, user.email }
9
10
 
10
- if EffectiveOrders.stripe_enabled
11
- table_column :stripe_customer_id
12
- table_column :stripe_active_card
13
- end
11
+ if EffectiveOrders.stripe_enabled
12
+ table_column :stripe_customer_id
13
+ table_column :stripe_active_card
14
+ end
14
15
 
15
- if EffectiveOrders.stripe_connect_enabled
16
- table_column :stripe_connect_access_token
17
- end
16
+ if EffectiveOrders.stripe_connect_enabled
17
+ table_column :stripe_connect_access_token
18
+ end
18
19
 
19
- table_column :subscription_types, column: 'subscription_types'
20
+ table_column :subscription_types, column: 'subscription_types'
20
21
 
21
- actions_column partial: 'admin/customers/actions'
22
- end
22
+ actions_column partial: 'admin/customers/actions'
23
+ end
23
24
 
24
- def collection
25
- Effective::Customer.customers.uniq
26
- .joins(:user, :subscriptions)
27
- .select('customers.*, users.email AS email')
28
- .select("array_to_string(array(#{Effective::Subscription.purchased.select('subscriptions.stripe_plan_id').where('subscriptions.customer_id = customers.id').to_sql}), ' ,') AS subscription_types")
29
- .group('customers.id, subscriptions.stripe_plan_id, users.email')
30
- end
25
+ def collection
26
+ Effective::Customer.customers.uniq
27
+ .joins(:user, :subscriptions)
28
+ .select('customers.*, users.email AS email')
29
+ .select("array_to_string(array(#{Effective::Subscription.purchased.select('subscriptions.stripe_plan_id').where('subscriptions.customer_id = customers.id').to_sql}), ' ,') AS subscription_types")
30
+ .group('customers.id, subscriptions.stripe_plan_id, users.email')
31
+ end
31
32
 
32
- def search_column(collection, table_column, search_term)
33
- return collection.where('subscriptions.stripe_plan_id ILIKE ?', "%#{search_term}%") if table_column[:name] == 'subscription_types'
34
- super
33
+ def search_column(collection, table_column, search_term)
34
+ return collection.where('subscriptions.stripe_plan_id ILIKE ?', "%#{search_term}%") if table_column[:name] == 'subscription_types'
35
+ super
36
+ end
35
37
  end
36
38
  end
37
39
  end
@@ -1,99 +1,101 @@
1
- module Effective
2
- module Datatables
3
- class OrderItems < Effective::Datatable
4
- datatable do
5
- default_order :purchased_at, :desc
6
-
7
- table_column(:purchased_at, type: :datetime, column: 'orders.purchased_at') do |order_item|
8
- Time.at(order_item[:purchased_at]).in_time_zone if order_item[:purchased_at].present?
9
- end
1
+ if Gem::Version.new(EffectiveDatatables::VERSION) < Gem::Version.new('3.0')
2
+ module Effective
3
+ module Datatables
4
+ class OrderItems < Effective::Datatable
5
+ datatable do
6
+ default_order :purchased_at, :desc
7
+
8
+ table_column(:purchased_at, type: :datetime, column: 'orders.purchased_at') do |order_item|
9
+ Time.at(order_item[:purchased_at]).in_time_zone if order_item[:purchased_at].present?
10
+ end
10
11
 
11
- table_column :id, visible: false
12
+ table_column :id, visible: false
13
+
14
+ if EffectiveOrders.obfuscate_order_ids
15
+ table_column(:order, type: :obfuscated_id, sortable: false) do |order_item|
16
+ obfuscated_id = Effective::Order.obfuscate(order_item[:order_id])
17
+ link_to(obfuscated_id, (datatables_admin_path? ? effective_orders.admin_order_path(obfuscated_id) : effective_orders.order_path(obfuscated_id)))
18
+ end
19
+ else
20
+ table_column(:order, sortable: false) do |order_item|
21
+ link_to(order_item.to_param, (datatables_admin_path? ? effective_orders.admin_order_path(order_item.to_param) : effective_orders.order_path(order_item.to_param)))
22
+ end
23
+ end
12
24
 
13
- if EffectiveOrders.obfuscate_order_ids
14
- table_column(:order, type: :obfuscated_id, sortable: false) do |order_item|
15
- obfuscated_id = Effective::Order.obfuscate(order_item[:order_id])
16
- link_to(obfuscated_id, (datatables_admin_path? ? effective_orders.admin_order_path(obfuscated_id) : effective_orders.order_path(obfuscated_id)))
25
+ table_column :email, column: 'users.email', label: 'Buyer Email', if: proc { attributes[:user_id].blank? } do |order_item|
26
+ link_to order_item[:email], (edit_admin_user_path(order_item[:user_id]) rescue admin_user_path(order_item[:user_id]) rescue '#')
17
27
  end
18
- else
19
- table_column(:order, sortable: false) do |order_item|
20
- link_to(order_item.to_param, (datatables_admin_path? ? effective_orders.admin_order_path(order_item.to_param) : effective_orders.order_path(order_item.to_param)))
28
+
29
+ if EffectiveOrders.require_billing_address
30
+ table_column :buyer_name, sortable: false, label: 'Buyer Name', if: proc { attributes[:user_id].blank? } do |order_item|
31
+ (order_item[:buyer_name] || '').split('!!SEP!!').find(&:present?)
32
+ end
21
33
  end
22
- end
23
34
 
24
- table_column :email, column: 'users.email', label: 'Buyer Email', if: proc { attributes[:user_id].blank? } do |order_item|
25
- link_to order_item[:email], (edit_admin_user_path(order_item[:user_id]) rescue admin_user_path(order_item[:user_id]) rescue '#')
26
- end
35
+ table_column :purchase_state, column: 'orders.purchase_state', filter: { type: :select, values: [%w(abandoned abandoned), [EffectiveOrders::PURCHASED, EffectiveOrders::PURCHASED], [EffectiveOrders::DECLINED, EffectiveOrders::DECLINED]], selected: EffectiveOrders::PURCHASED } do |order_item|
36
+ order_item[:purchase_state] || 'abandoned'
37
+ end
27
38
 
28
- if EffectiveOrders.require_billing_address
29
- table_column :buyer_name, sortable: false, label: 'Buyer Name', if: proc { attributes[:user_id].blank? } do |order_item|
30
- (order_item[:buyer_name] || '').split('!!SEP!!').find(&:present?)
39
+ table_column :title do |order_item|
40
+ order_item.quantity == 1 ? order_item.title : "#{order_item.title} (#{order_item.quantity} purchased)"
31
41
  end
32
- end
33
42
 
34
- table_column :purchase_state, column: 'orders.purchase_state', filter: { type: :select, values: [%w(abandoned abandoned), [EffectiveOrders::PURCHASED, EffectiveOrders::PURCHASED], [EffectiveOrders::DECLINED, EffectiveOrders::DECLINED]], selected: EffectiveOrders::PURCHASED } do |order_item|
35
- order_item[:purchase_state] || 'abandoned'
36
- end
43
+ table_column(:subtotal) { |order_item| price_to_currency(order_item[:subtotal].to_i) }
44
+ table_column(:tax) { |order_item| price_to_currency(order_item[:tax].to_i) }
45
+ table_column(:total) { |order_item| price_to_currency(order_item[:total].to_i) }
37
46
 
38
- table_column :title do |order_item|
39
- order_item.quantity == 1 ? order_item.title : "#{order_item.title} (#{order_item.quantity} purchased)"
47
+ table_column :created_at, visible: false
48
+ table_column :updated_at, visible: false
40
49
  end
41
50
 
42
- table_column(:subtotal) { |order_item| price_to_currency(order_item[:subtotal].to_i) }
43
- table_column(:tax) { |order_item| price_to_currency(order_item[:tax].to_i) }
44
- table_column(:total) { |order_item| price_to_currency(order_item[:total].to_i) }
51
+ def collection
52
+ collection = Effective::OrderItem.unscoped
53
+ .joins(order: :user)
54
+ .select('order_items.*, orders.*, users.email AS email')
55
+ .select("#{query_subtotal} AS subtotal, #{query_tax} AS tax, #{query_total} AS total")
56
+ .group('order_items.id, orders.id, users.email')
45
57
 
46
- table_column :created_at, visible: false
47
- table_column :updated_at, visible: false
48
- end
49
-
50
- def collection
51
- collection = Effective::OrderItem.unscoped
52
- .joins(order: :user)
53
- .select('order_items.*, orders.*, users.email AS email')
54
- .select("#{query_subtotal} AS subtotal, #{query_tax} AS tax, #{query_total} AS total")
55
- .group('order_items.id, orders.id, users.email')
58
+ if EffectiveOrders.require_billing_address && defined?(EffectiveAddresses)
59
+ addresses_tbl = EffectiveAddresses.addresses_table_name
56
60
 
57
- if EffectiveOrders.require_billing_address && defined?(EffectiveAddresses)
58
- addresses_tbl = EffectiveAddresses.addresses_table_name
61
+ collection = collection
62
+ .joins("LEFT JOIN (SELECT addressable_id, string_agg(#{addresses_tbl}.full_name, '!!SEP!!') AS buyer_name FROM #{addresses_tbl} WHERE #{addresses_tbl}.category = 'billing' AND #{addresses_tbl}.addressable_type = 'Effective::Order' GROUP BY #{addresses_tbl}.addressable_id) #{addresses_tbl} ON orders.id = #{addresses_tbl}.addressable_id")
63
+ .group("#{addresses_tbl}.buyer_name")
64
+ .select("#{addresses_tbl}.buyer_name AS buyer_name")
65
+ end
59
66
 
60
- collection = collection
61
- .joins("LEFT JOIN (SELECT addressable_id, string_agg(#{addresses_tbl}.full_name, '!!SEP!!') AS buyer_name FROM #{addresses_tbl} WHERE #{addresses_tbl}.category = 'billing' AND #{addresses_tbl}.addressable_type = 'Effective::Order' GROUP BY #{addresses_tbl}.addressable_id) #{addresses_tbl} ON orders.id = #{addresses_tbl}.addressable_id")
62
- .group("#{addresses_tbl}.buyer_name")
63
- .select("#{addresses_tbl}.buyer_name AS buyer_name")
67
+ attributes[:user_id].present? ? collection.where("#{EffectiveOrders.orders_table_name.to_s}.user_id = ?", attributes[:user_id]) : collection
64
68
  end
65
69
 
66
- attributes[:user_id].present? ? collection.where("#{EffectiveOrders.orders_table_name.to_s}.user_id = ?", attributes[:user_id]) : collection
67
- end
68
-
69
- def query_subtotal
70
- 'SUM(price * quantity)'
71
- end
70
+ def query_subtotal
71
+ 'SUM(price * quantity)'
72
+ end
72
73
 
73
- def query_total
74
- 'SUM((price * quantity) + (CASE tax_exempt WHEN true THEN 0 ELSE ((price * quantity) * tax_rate) END))'
75
- end
74
+ def query_total
75
+ 'SUM((price * quantity) + (CASE tax_exempt WHEN true THEN 0 ELSE ((price * quantity) * tax_rate) END))'
76
+ end
76
77
 
77
- def query_tax
78
- '(CASE tax_exempt WHEN true THEN 0 ELSE ((price * quantity) * tax_rate) END)'
79
- end
78
+ def query_tax
79
+ '(CASE tax_exempt WHEN true THEN 0 ELSE ((price * quantity) * tax_rate) END)'
80
+ end
80
81
 
81
- def search_column(collection, table_column, search_term)
82
- if table_column[:name] == 'order'
83
- collection.where("#{EffectiveOrders.order_items_table_name.to_s}.order_id = ?", Effective::Order.deobfuscate(search_term))
84
- elsif table_column[:name] == 'purchase_state' && search_term == 'abandoned'
85
- collection.where("#{EffectiveOrders.orders_table_name.to_s}.purchase_state IS NULL")
86
- elsif table_column[:name] == 'subtotal'
87
- collection.having("#{query_subtotal} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i)
88
- elsif table_column[:name] == 'tax'
89
- collection.having("#{query_tax} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i)
90
- elsif table_column[:name] == 'total'
91
- collection.having("#{query_total} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i)
92
- else
93
- super
82
+ def search_column(collection, table_column, search_term)
83
+ if table_column[:name] == 'order'
84
+ collection.where("#{EffectiveOrders.order_items_table_name.to_s}.order_id = ?", Effective::Order.deobfuscate(search_term))
85
+ elsif table_column[:name] == 'purchase_state' && search_term == 'abandoned'
86
+ collection.where("#{EffectiveOrders.orders_table_name.to_s}.purchase_state IS NULL")
87
+ elsif table_column[:name] == 'subtotal'
88
+ collection.having("#{query_subtotal} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i)
89
+ elsif table_column[:name] == 'tax'
90
+ collection.having("#{query_tax} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i)
91
+ elsif table_column[:name] == 'total'
92
+ collection.having("#{query_total} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i)
93
+ else
94
+ super
95
+ end
94
96
  end
95
- end
96
97
 
98
+ end
97
99
  end
98
100
  end
99
101
  end
@@ -1,3 +1,3 @@
1
1
  module EffectiveOrders
2
- VERSION = '2.2.2'.freeze
2
+ VERSION = '2.2.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_orders
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-03 00:00:00.000000000 Z
11
+ date: 2017-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -297,6 +297,9 @@ files:
297
297
  - app/controllers/effective/providers/stripe_connect.rb
298
298
  - app/controllers/effective/subscriptions_controller.rb
299
299
  - app/controllers/effective/webhooks_controller.rb
300
+ - app/datatables/effective_customers_datatable.rb
301
+ - app/datatables/effective_order_items_datatable.rb
302
+ - app/datatables/effective_orders_datatable.rb
300
303
  - app/helpers/effective_carts_helper.rb
301
304
  - app/helpers/effective_ccbill_helper.rb
302
305
  - app/helpers/effective_orders_helper.rb