Class: Analytic::OrdersSoldFact

Inherits:
ApplicationRecord
  • Object
show all
Includes:
Utility
Defined in:
app/models/analytic/orders_sold_fact.rb

Overview

== Schema Information

Table name: analytic_orders_sold_facts
Database name: primary

id :integer not null, primary key
num_of_orders :integer
total_revenue :decimal(, )
catalog_id :integer
date_time_dimension_id :integer
report_grouping_dimension_id :integer

Belongs to collapse

Class Method Summary collapse

Class Method Details

.refresh_data(logger = nil) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/models/analytic/orders_sold_fact.rb', line 20

def self.refresh_data(logger = nil)
   logger ||= Rails.logger
	max_date_id = Analytic::OrdersSoldFact.maximum(:date_time_dimension_id)
   max_date_id = Analytic::DateTimeDimension.where(:date => "2012-01-01") if max_date_id.blank?
	@max_date = Analytic::DateTimeDimension.where(:id => max_date_id).pick(:date)

	sql = "INSERT INTO analytic_orders_sold_facts (num_of_orders,total_revenue,report_grouping_dimension_id,date_time_dimension_id,catalog_id)
			SELECT
       sum(num_of_orders) as num_of_orders,sum(total_revenue) as total_revenue,rg_id,d_id,catalog_id
       FROM
       (select count(distinct(order_id)) as num_of_orders,sum(revenue_consolidated) as total_revenue,
       (select p.catalog_id from parties p where p.id = i.customer_id) as catalog_id,
       rg.id as rg_id,dt.id as d_id from invoices i
       inner join analytic_date_time_dimensions dt on dt.date = i.created_at::date
       inner join analytic_report_grouping_dimensions rg on rg.report_grouping = i.report_grouping
			where i.created_at between '#{@max_date}' and current_date and i.report_grouping is not null and i.invoice_type in ('#{Invoice::SO}', '#{Invoice::MO}', '#{Invoice::TO}', '#{Invoice::SS}')
			group by rg_id,d_id,i.id,catalog_id) a
       group by rg_id,d_id,catalog_id
       order by d_id,rg_id"
	result = execute(sql)
end

Instance Method Details

#date_time_dimensionDateTimeDimension



17
# File 'app/models/analytic/orders_sold_fact.rb', line 17

belongs_to :date_time_dimension, optional: true

#report_grouping_dimensionReportGroupingDimension



18
# File 'app/models/analytic/orders_sold_fact.rb', line 18

belongs_to :report_grouping_dimension, optional: true