Class: Effective::Datatables::OrderItems
- Inherits:
-
Effective::Datatable
- Object
- Effective::Datatable
- Effective::Datatables::OrderItems
- Defined in:
- app/models/effective/datatables/order_items.rb
Instance Method Summary collapse
- #collection ⇒ Object
- #query_subtotal ⇒ Object
- #query_tax ⇒ Object
- #query_total ⇒ Object
- #search_column(collection, table_column, search_term) ⇒ Object
Instance Method Details
#collection ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'app/models/effective/datatables/order_items.rb', line 43 def collection collection = Effective::OrderItem.unscoped .joins(:order => :user) .select('order_items.*, orders.*, users.email AS email') .select("#{query_subtotal} AS subtotal, #{query_tax} AS tax, #{query_total} AS total") .group('order_items.id, orders.id, users.email') if EffectiveOrders.require_billing_address && defined?(EffectiveAddresses) addresses_tbl = EffectiveAddresses.addresses_table_name collection = collection .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") .group("#{addresses_tbl}.buyer_name") .select("#{addresses_tbl}.buyer_name AS buyer_name") end attributes[:user_id].present? ? collection.where("#{EffectiveOrders.orders_table_name.to_s}.user_id = ?", attributes[:user_id]) : collection end |
#query_subtotal ⇒ Object
62 63 64 |
# File 'app/models/effective/datatables/order_items.rb', line 62 def query_subtotal 'SUM(price * quantity)' end |
#query_tax ⇒ Object
70 71 72 |
# File 'app/models/effective/datatables/order_items.rb', line 70 def query_tax '(CASE tax_exempt WHEN true THEN 0 ELSE ((price * quantity) * tax_rate) END)' end |
#query_total ⇒ Object
66 67 68 |
# File 'app/models/effective/datatables/order_items.rb', line 66 def query_total 'SUM((price * quantity) + (CASE tax_exempt WHEN true THEN 0 ELSE ((price * quantity) * tax_rate) END))' end |
#search_column(collection, table_column, search_term) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'app/models/effective/datatables/order_items.rb', line 74 def search_column(collection, table_column, search_term) if table_column[:name] == 'order' collection.where("#{EffectiveOrders.order_items_table_name.to_s}.order_id = ?", Effective::Order.deobfuscate(search_term)) elsif table_column[:name] == 'purchase_state' && search_term == 'abandoned' collection.where("#{EffectiveOrders.orders_table_name.to_s}.purchase_state IS NULL") elsif table_column[:name] == 'subtotal' collection.having("#{query_subtotal} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i) elsif table_column[:name] == 'tax' collection.having("#{query_tax} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i) elsif table_column[:name] == 'total' collection.having("#{query_total} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i) else super end end |