Class: Effective::Datatables::Orders
- Inherits:
-
Effective::Datatable
- Object
- Effective::Datatable
- Effective::Datatables::Orders
- Defined in:
- app/models/effective/datatables/orders.rb
Instance Method Summary collapse
- #collection ⇒ Object
- #query_total ⇒ Object
- #search_column(collection, table_column, search_term) ⇒ Object
Instance Method Details
#collection ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'app/models/effective/datatables/orders.rb', line 36 def collection collection = Effective::Order.unscoped.purchased .joins(:user) .joins(:order_items) .group('users.email') .group('orders.id') .select('users.email AS email') .select('orders.*') .select("#{query_total} AS total") .select("string_agg(order_items.title, '!!OI!!') AS order_items") if attributes[:user_id].present? collection.where(:user_id => attributes[:user_id]) else collection end end |
#query_total ⇒ Object
55 56 57 |
# File 'app/models/effective/datatables/orders.rb', line 55 def query_total "SUM((order_items.price * order_items.quantity) + (CASE order_items.tax_exempt WHEN true THEN 0 ELSE ((order_items.price * order_items.quantity) * order_items.tax_rate) END))" end |
#search_column(collection, table_column, search_term) ⇒ Object
59 60 61 62 63 64 65 |
# File 'app/models/effective/datatables/orders.rb', line 59 def search_column(collection, table_column, search_term) if table_column[:name] == 'total' collection.having("#{query_total} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i) else super end end |